копирование списка файлов через терминал - PullRequest
5 голосов
/ 11 ноября 2009

У меня есть список имен файлов с именем list.txt.

Я хотел бы скопировать файлы из этого списка в новую папку.

Как мне это сделать?

Спасибо!

Ответы [ 4 ]

8 голосов
/ 11 ноября 2009

Вы можете сделать это:

cp `cat list.txt` new-folder/

Обратите внимание, что вы должны избегать пробелов в именах файлов при использовании этого (в этом случае понадобится другое решение).

Обратные метки выполняют команду cat list.txt и используют вывод этой команды как часть командной строки для cp. Символы новой строки в выходных данных cat свернуты в пробелы перед заменой командной строки.

3 голосов
/ 11 ноября 2009

Если вы хотите сохранить структуру каталогов, используйте один из них (при условии GNU tar):

cpio -pvdm /destination <list.txt

tar -cf - -F list.txt | tar -C /destination -x

В обоих случаях чистым результатом является то, что / destination имеет префикс к именам файлов в list.txt.

2 голосов
/ 11 ноября 2009

использовать цикл

while read -r line
do
  cp "$line" /destination
done <"file"
1 голос
/ 14 декабря 2009

цикл:

dest="<destination folder>" #keep the quotes
for i in `cat < list.txt` #loop each line of list.txt
do
cp $i $dest #in each loop copy $i, e/a line of list.txt to $dest
echo "Done."
done

Проверено. Убедитесь, что «./list.txt» существует, в противном случае вручную введите абсолютный путь. :)

...