Shell Script para mover arquivos da origem para o dir de destino

1

Tentando escrever um script de shell para mover todos os arquivos .csv presentes no local de origem para o local de destino. A condição é somente aqueles arquivos .csv que devem ser movidos e que tenham seus arquivos .txt correspondentes.

Exemplo: source: / home / source tem abc.csv, abc.txt, def.csv, def.txt, efg.csv Portanto, com base apenas na condição abc.csv, o def.csv deve ser movido para o diretório de destino e, como o efg.csv não possui o arquivo efg.txt correspondente, ele não deve ser movido para o diretório de destino.

    
por KAPZ 09.07.2018 / 16:35

1 resposta

2

Faça um loop sobre os arquivos csv e teste se há um arquivo txt com o mesmo nome de arquivo. Se houver, mova o arquivo csv .

sourcedir=/some/dir
destdir=/some/other/dir

for csvfile in "$sourcedir"/*.csv; do
    txtfile="${csvfile%.csv}.txt"
    if [ -e "$txtfile" ]; then
        printf 'Will move %s to %s\n' "$csvfile" "$destdir"
        # mv -i "$csvfile" "$destdir"
    fi
done

A expansão do parâmetro ${csvfile%.csv}.txt levaria .csv do final do nome do arquivo atual em $csvfile e substituiria por .txt .

O comando mv foi comentado por segurança.

    
por 09.07.2018 / 16:57