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