Como mover as pastas para o novo diretório com base em sua correspondência no arquivo csv?

1

No meu diretório atual eu tenho muitas pastas como F1, F2, F3, F4, F5, F6, F7, F8, F9, F10.

Eu tenho um arquivo csv "dan.csv" no diretório atual que tem uma coluna com nomes de pastas.

O arquivo csv se parece com o seguinte: O nome da coluna é "id"

id
F1
F4
F5
F6
F8
F10

Com base na correspondência deles no arquivo csv, eu gostaria de mover as pastas para um novo diretório "DAN".

Para fazer isso eu tentei como abaixo:

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

Isso não causou nenhum erro e também não moveu as pastas para o novo diretório "DAN".

    
por beginner 27.03.2018 / 16:31

1 resposta

0

Um simples laço bash while é suficiente:

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

Que lê todas as linhas do arquivo CSV, divide a linha pelo conjunto de caracteres na variável IFS e armazena cada valor dessa linha nas variáveis correspondentes especificadas no cabeçalho do loop while.

Certifique-se de ajustar o cabeçalho do loop while (onde todas as colunas estão listadas) ao cabeçalho do seu arquivo CSV. Você provavelmente não precisa dos valores das outras colunas, mas é importante lê-las, caso contrário, todos os valores no CSV serão tratados como um valor id . Se o seu arquivo CSV for separado por algo diferente de ; , certifique-se de definir o caractere específico como IFS= -value antes do loop while .

Se o seu dan.csv tivesse quatro colunas onde o id é o terceiro, você faria assim:

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