Подтвердить что ты не робот

Как перемещать или копировать файлы, перечисленные командой "Найти" в unix?

У меня есть список определенных файлов, которые я вижу, используя приведенную ниже команду, но как я могу скопировать эти файлы, перечисленные в другую папку, скажем ~/test?

find . -mtime 1 -exec du -hc {} +
4b9b3361

Ответ 2

Собственно, вы можете обрабатывать вывод команды 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'

Ответ 3

find /PATH/TO/YOUR/FILES -name NAME.EXT -exec cp -rfp {} /DST_DIR \;

Ответ 4

Если вы используете GNU find,

find . -mtime 1 -exec cp -t ~/test/ {} +

Это работает, а также выводит вывод в xargs, избегая при этом ошибок (он обрабатывает встроенные пространства и новые строки без использования find ... -print0 | xargs -0 ...).

Ответ 5

перемещает найденные файлы по одному каналу относительно их текущего каталога (не текущего текущего каталога)

find . -path "*/yourfolder/*" -type f -execdir mv {} .. \;