Bash команда для поиска файлов по списку имен файлов - PullRequest
1 голос
/ 27 мая 2020

Используя терминал на ma c, у меня есть команда bash из моего предыдущего исследования, которая отлично работает.

Он выполняет поиск только на одном уровне каталога и перемещает все файлы (соответствующие текстовому списку имен файлов), помещая их в новый каталог.

while read filename; do mv DIR/${filename}.jpg NEWDIR/; done < filenamelist.txt

Теперь мне нужно, чтобы он мог выполнять поиск во всех подпапках в DIR. Все подпапки обычно имеют случайные имена. Я не думаю, что у команды MV move есть рекурсивная опция, и мне не удалось найти никаких других c решений. Должен ли я использовать правильный сценарий оболочки вместо одной командной строки?

Я все еще учусь, был бы очень признателен за любые указатели! Спасибо за прочтение.

1 Ответ

1 голос
/ 27 мая 2020

Вы можете использовать find для поиска в подпапках:

while read filename; do find DIR/ -name "${filename}.jpg" -exec mv "{}" NEWDIR/ \; ; done < filenamelist.txt

Вы можете использовать mv параметры -f для принудительной перезаписи или -n, чтобы не перезаписывать существующие файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...