Терминал 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, но не используйте обе опции;
действительно, похоже, что он обрабатывает только второй вариант (так как единственный перемещенный файл - это файл, который соответствует второму варианту); как передать все файлы, соответствующие первому или второму параметру, для перемещения?