2012-01-23 2 views
2

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

текстовый файл текстовый файл будет выглядеть примерно так:

A/ART-FHKFX1.jpg 
B/BIG-085M.jpg 
B/BIG-085XL.jpg 
L/LL-CJFK.jpg 
N/NRT-56808EA.jpg 
P/PFE-25.10.jpg 
P/PFE-7/60.jpg 
P/PFE-7L.20.jpg 
P/PFE-8.25.jpg 
P/PFE-9.15.jpg 
P/PFE-D11.1.tiff 
P/PFE-D11.1.tiff 
P/PFE-D12.2.tiff 
P/PFE-D12.2.tiff 
+0

Можете ли вы дать нам представление о том, как выглядит формат CSV? Возможно, некоторые образцы данных. Есть ли один файл в строке? Являются ли каталоги значений CSV, где этот файл может существовать? Есть ли такое же количество полей в каждой строке? –

+2

Не похоже на CSV для меня. –

+0

+1 для не являющегося CSV-файлом; ->. Измените свое сообщение, чтобы показать, что вы ожидаете, что получившаяся копия будет выглядеть для первой строки ваших данных образца. Удачи. – shellter

ответ

2

с помощью find займет много времени, попробуйте использовать locate, если это возможно.

Что произойдет, если есть несколько совпадений? например, поиск foo.bar и наличие/foo.bar, а также b/foo.bar, что бы вы сделали в этом случае?

ваш CSV, кажется, включает путь, учитывая предыдущий я буду считать эти пути, на самом деле действует, откуда запускается скрипт так что в этом случае просто сделать это:

#!/bin/bash 

while read path; do 
    cp "$path" "$1" 
done 

затем вызвать его, как это :

teh_script /path/to/destination < csv-file.csv 
Смежные вопросы