Терминал OSX: как переместить тысячи файлов, которые соответствуют определенному шаблону имени

У меня есть около 70000 файлов (в основном дубликаты), большинство из которых соответствуют шаблону имени, например name(1).ext, name(2).ext .... name(10).ext. Однако среди этих файлов есть и другие с именем name (xwz).ext.

Теперь я хочу найти все файлы первого типа и переместить их в папку назначения; Я посмотрел на несколько ответов на суперпользователя и мне удается сделать следующее:

Сначала я использовал команду find, чтобы найти файлы следующим образом:

find ~/sourcedir -name "*([0-9]).*" -o -name "*([0-9][0-9]).*"

который извлекает все файлы, которые я хочу (я напечатал их в файле и получил более 73 000 файлов); затем я попытался передать их команде Move следующим образом:

find ~/sourcedir -name "*([0-9]).*" -o -name "*([0-9][0-9]).*" -type f -exec mv {} ~/destinationdir \;

однако при этом только один файл перемещается в пункт назначения (последний в списке) или ни одного; что здесь не так? почему я не могу переместить все файлы в директорию назначения?

тем не менее, если я использую только одну опцию в команде find, скажем:

find ~/sourcedir -name "*([0-9]).*" 

и затем выполните команду -execmv, но не используйте обе опции;

действительно, похоже, что он обрабатывает только второй вариант (так как единственный перемещенный файл - это файл, который соответствует второму варианту); как передать все файлы, соответствующие первому или второму параметру, для перемещения?

0 ответов

Другие вопросы по тегам