%20%D0%B2%D1%81%D0%B5%20%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%82%D0%B8%D0%BF%D0%B0%20%D0%B2%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%20%D0%B2%20Unix%3F.png)
Я пока не очень хорошо знаком со всеми трюками grep/find/awk/xargs, так что будьте терпеливы =]
У меня есть определенный тип файла, скажем *.xxx, в случайных местах в определенном каталоге. Как мне найти все такие файлы и переместить их в папку в моем домашнем каталоге в Unix (которая может еще не существовать)?
решение1
Используйте find
с exec
опцией, но сначала создайте целевую папку.
mkdir -p /home/somewhere/else
find /somewhere -iname "*.xxx"
Это выведет список всего, что будет перемещено. Теперь, если вы уверены, что это те файлы, которые вы хотите переместить, выполните следующее:
find /somewhere -iname "*.xxx" -exec mv '{}' /home/somewhere/else/ \;
В exec
строке '{}'
будет заменено фактическим именем файла, и он будет перемещен в цель. Аналогично, чтобы скопировать, просто замените mv
на cp
. \;
Для завершения команды необходимо.
Если вам необходимо подтверждение перед каждой файловой операцией, которая приведет к перезаписи уже существующего файла, вы можете добавить опцию -i
после mv
или cp
соответственно.
Нет нужды в grep
, xargs
и им подобных. Это бы неоправданно усложнило ситуацию.