2016-11-20 5 views
1

У меня есть список изображений в виде текстового файла в следующем формате:Пакетное копирование файлов из текстового списка имен файлов в Linux

abc.jpg 
xyz.jpg 

Список содержит около в различных каталогах сотни изображений в определенной директории , Я хотел бы создать сценарий оболочки, который находит и копирует эти файлы в указанный каталог.

Может ли этот сценарий быть адаптирован к тому, что мне нужно? Copy list of file names from multiple directories

ответ

2

вам не нужен сценарий для этого, просто Oneliner будет делать: (при условии, что полный путь_к_файл или относительный путь файл, чтобы вы были исполняющей команда записываются в файле your_file.txt для каждого изображения)

cat your_file.txt | xargs find path_to_root_dir -name | xargs -I{} cp {} specfic_directory/ 

xargs будет принимать несколько строк и запускает команду, которую вы даете ему с входом каждой строки с -I можно указать переменную, для которой содержание строки помещается в команде (по умолчанию в конце).

Таким образом, это займет от вас всю строку, поиск файла во всех подкаталогах path_to_root_dir, а затем копию.

+0

Я должен был указать это. В текстовом файле у меня есть только имя файла, сами файлы разбросаны в разных каталогах. – brett

+0

Я получаю сообщение об ошибке: find: paths должно предшествовать выражению: abc.jpg – brett

+0

Вы изменили 'path_to_root_dir' в соответствии с вашими нуждами? – zabeltech

Смежные вопросы