1

В моем нынешнем каталоге у меня есть много папок, таких как F1, F2, F3, F4, F5, F6, F7, F8, F9, F10.

У меня есть CSV-файл "dan.csv" в текущем каталоге, который имеет столбец с именами папок.

CSV-файл выглядит следующим образом: имя столбца "id"

id
F1
F4
F5
F6
F8
F10

Основываясь на их совпадении в CSV-файле, я хотел бы переместить папки в новый каталог "DAN".

Для этого я попытался, как показано ниже:

xargs -a <(tail -n +2 dan.csv) -I{} sh -c '[ -d "{}" ] && mv -t DAN "{}"'

Это не выдало никакой ошибки, а также не переместило папки в новый каталог "DAN".

1 ответ1

0

Простой удар во while цикла достаточно:

IFS=";"
while read othercolumn1 othercolumn2 ... id ... othercolumnx
do
    mv $id DAN/
done < dan.csv

Он считывает каждую строку из файла CSV, разбивает строку по набору символов в переменной IFS и сохраняет каждое значение этой строки в соответствующих переменных, указанных в заголовке цикла while.

Убедитесь, что заголовок цикла while (где перечислены все столбцы) соответствует заголовку вашего CSV-файла. Возможно, вам не нужны значения других столбцов, но, тем не менее, важно прочитать их, иначе каждое значение в CSV будет рассматриваться как значение id . Если ваш CSV-файл отделен чем-то другим, кроме ; , Убедитесь , чтобы задать конкретный характер , так как IFS= -value до цикла.

Если ваш dan.csv имеет четыре столбца, где id является третьим, вы должны сделать это так:

IFS=";"
while read othercolumn1 othercolumn2 id othercolumn4
do
    mv $id DAN/
done < dan.csv

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .