У меня есть список определенных файлов, которые я вижу, используя приведенную ниже команду, но как я могу скопировать эти файлы, перечисленные в другую папку, скажем ~/test?
find . -mtime 1 -exec du -hc {} +
У меня есть список определенных файлов, которые я вижу, используя приведенную ниже команду, но как я могу скопировать эти файлы, перечисленные в другую папку, скажем ~/test?
find . -mtime 1 -exec du -hc {} +
Добавляя к Eric Jablow ответ, вот возможное решение (это сработало для меня - linux mint 14/nadia)
find /path/to/search/ -type f -name "glob-to-find-files" | xargs cp -t /target/path/
Вы можете обратиться к разделу Как использовать xargs для копирования файлов с пробелами и кавычками в их имена?".
Собственно, вы можете обрабатывать вывод команды find
в команде копирования двумя способами:
Если вывод команды find
не содержит пробела, т.е. если имя файла не содержит пробела в нем, вы можете использовать:
Syntax:
find <Path> <Conditions> | xargs cp -t <copy file path>
Example:
find -mtime -1 -type f | xargs cp -t inner/
Но наши файлы производственных данных могут содержать пробелы, поэтому большую часть времени эта команда эффективна:
Syntax:
find <path> <condition> -exec cp '{}' <copy path> \;
Example
find -mtime -1 -type f -exec cp '{}' inner/ \;
Во втором примере последняя часть, полуколония также рассматривается как часть команды find
и должна быть экранирована перед нажатием Enter. В противном случае вы получите сообщение об ошибке:
find: missing argument to `-exec'
find /PATH/TO/YOUR/FILES -name NAME.EXT -exec cp -rfp {} /DST_DIR \;
Если вы используете GNU find,
find . -mtime 1 -exec cp -t ~/test/ {} +
Это работает, а также выводит вывод в xargs
, избегая при этом ошибок (он обрабатывает встроенные пространства и новые строки без использования find ... -print0 | xargs -0 ...
).
перемещает найденные файлы по одному каналу относительно их текущего каталога (не текущего текущего каталога)
find . -path "*/yourfolder/*" -type f -execdir mv {} .. \;