Как делают меня подмножество и копируют каталоги с помощью csv?

Как я могу использовать .csv, чтобы скопировать и вставить определенный набор каталогов к новому местоположению?

.csv похож на это:

 directory-name
  500
  505
  666
  900
  .
  .
  .
  1200
2
задан 1 November 2017 в 11:15

3 ответа

Используйте xargs с cp следующим образом.

xargs -a /path/to/file.csv cp -r -t /path/to/dest/
2
ответ дан 2 December 2019 в 01:46

Принятие:

  • файл CSV имеет отдельный столбец
  • существует одно имя папки на строку
  • , первая строка является заголовком и должна быть проигнорирована

Тогда, цикл как это должен работать:

tail -n +2 file.csv | while read dirname; do cp -r "$dirname" /path/to/target/; done

Примечания:

  • tail -n +2 должен пропустить первую строку файла (произведите 2-е и более поздние строки)
  • while цикл читает имена папок линию за линией, и для каждой строки выполняется cp -r
3
ответ дан 2 December 2019 в 01:46

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

#!/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 папок.

1
ответ дан 2 December 2019 в 01:46

Другие вопросы по тегам:

Похожие вопросы: