У меня есть файл .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
которые найдут первый файл (в текущем каталоге, рекурсивно) с таким именем и скопируют его.