Я пока не очень хорошо знаком со всеми трюками 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
и им подобных. Это бы неоправданно усложнило ситуацию.