Это небольшой вопрос, но я пытаюсь скопировать все файлы .doc, которые я нахожу в каталоге, и скопировать их в другой каталог.
Я знаю каждую команду:
find -name '*.doc' .
а также:
cp filename location
Как я могу объединить две команды?
find /path/to/search -name "*.doc" -exec cp {} /path/to/copy/to \;
Если есть много файлов .doc, это ваш лучший вариант, чтобы не превышать ограничение на количество символов.
Другая возможность:
find /path/to/search -name \*.doc -print0 | xargs -0 cp --target-directory=/destination/path
Это сокращает количество вызовов команды copy по сравнению с find -exec (должно быть заметно быстрее, если у вас огромное количество файлов)
На солярисе вы можете использовать следующее:
find /path/to/search -name "*.doc" -exec cp {} /destination/directory \;
Найдите файлы, принадлежащие пользователю kelly, и скопируйте их в каталог: /opt/dir
# cd (into /path to copy files) e.g. cd /opt/
# mkdir dir (where you want to copy the files)
# find / -user kelly -exec cp -rfp {} /opt/dir/ \;
Обобщая свой вопрос от «.doc» в «.jpg» или других двоичных файлов изображения вам потребуется дополнительных инструментов с открытым исходным кодом, как tagim и Recoll.
tagim помечает ваши изображения ключевыми словами (или рейтингами), а затем вы можете отсортировать / отфильтровать их, используя recoll, и передать список в cp
используя xargs
чтобы соединить их вместе:
recollq 'ofJoe ext:jpg' | xargs cp --target-directory=~/Photos/ofJoe