Поиск и копирование файлов в Терминале

Поиск и копирование файлов в Терминале

У меня есть файл .txt (называемый list.txt), содержащий список имен файлов, включая их пути. Например:

/Users/Me/Downloads/0001.pdf
/Users/Me/Downloads/0010.pdf
/Users/Me/Downloads/0053.pdf
и т. д.

Я хочу скопировать их в папку на моем рабочем столе под названием "new-folder". Для этого я использую этот скрипт в Терминале:

cp `cat /Users/Me/Desktop/list.txt` /Users/Me/Desktop/new-folder/

И это работает отлично!
Но теперь я хочу расширить эту функциональность.
Во-первых, это не работает, если пути содержат пробелы, что не очень практично.
Во-вторых, я не всегда уверен в путях. Я хотел бы, чтобы Терминал искал в определенной папке и ее подпапках файл с именем "0001.pdf".

Мои познания в Терминале в основном ограничиваются этим одним скриптом, просто чтобы вы знали.
Надеюсь, кто-нибудь сможет мне помочь, и заранее большое спасибо!

решение1

Вы можете использовать xargsдля цитирования каждой строки.

xargs -a list.txt -I% cp "%" destination/

Ваше второе требование не очень практично, но если предположить, что list — это просто список имен файлов, то что-то вроде этого может сработать:

xargs -a list.txt -L1 -I% find -name "%" -exec cp {} destination/ \; -quit

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

Связанный контент