Как я могу использовать .csv, чтобы скопировать и вставить определенный набор каталогов к новому местоположению?
.csv похож на это:
directory-name
500
505
666
900
.
.
.
1200
Используйте xargs
с cp
следующим образом.
xargs -a /path/to/file.csv cp -r -t /path/to/dest/
Принятие:
Тогда, цикл как это должен работать:
tail -n +2 file.csv | while read dirname; do cp -r "$dirname" /path/to/target/; done
Примечания:
tail -n +2
должен пропустить первую строку файла (произведите 2-е и более поздние строки) while
цикл читает имена папок линию за линией, и для каждой строки выполняется cp -r
Можно выбрать подмножество с массив удара, режущий , с помощью следующей части кода:
#!/bin/bash
a=(`tail -n +2 folders.csv`);
b=("${a[@]:$1:$2}");
for i in "${b[@]}"
do
cp -r master_directory/"$i"/ new_path/;
done
Эта строка b=("${a[@]:$1:$2}");
позволяет Вам передать 2 аргумента своему сценарию и выбрать только папки между теми аргументами, например, если Вы вводите:
$ bash script.sh 1 3
сценарий только выбрал бы папки между строкой 1 и строкой 3 (после игнорирования строки заголовка). В Вашем случае это выбрало бы 505, 666, 900 папок.