it-swarm.com.ru

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

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

find . -mtime 1 -exec du -hc {} +
38
L P

В добавление к ответу Эрика Джаблоу, вот возможное решение (у меня это сработало - linux mint 14/nadia)

find /path/to/search/ -type f -name "glob-to-find-files" | xargs cp -t /target/path/

Вы можете обратиться к « Как я могу использовать xargs для копирования файлов, в именах которых есть пробелы и кавычки? ».

63
Ankur

Вы можете обработать вывод команды find

  1. Если выходные данные команды find не содержат пробелов, т.е. если вы можете использовать:

    Syntax:
        find <Path> <Conditions> | xargs cp -t <copy file path>
    Example:
        find -mtime -1 -type f | xargs cp -t inner/
    
  2. Эта команда эффективна:

    Syntax:
       find <path> <condition> -exec cp '{}' <copy path> \;
    
    Example 
       find -mtime -1 -type f -exec cp '{}' inner/ \;
    

Во втором примере, в последней части, в качестве команды - findEnter, Если вы получите сообщение об ошибке:

find: missing argument to `-exec'
29
Thiyagu ATR
find /PATH/TO/YOUR/FILES -name NAME.EXT -exec cp -rfp {} /DST_DIR \;
12
Laith Al Obaidy

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

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

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

4
kbolino

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

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