Este script tem dois argumentos. Um para o diretório de seus arquivos csv. O outro para os novos arquivos corrigidos.
Caso você tenha mais de um voo no mesmo dia, adicionei o tempo como parte do nome do arquivo para garantir que haja um nome exclusivo para cada arquivo de saída.
O script:
#!/bin/bash
indir=$HOME/indir
outdir=$HOME/outdir
[[ -d $outdir ]] || (echo "Outdir doesn't exist... Exiting..." ; exit)
process() {
file=$1
datetime=$(head -1 $file|awk -F, '{print $NF"/"$(NF-2)}' | sed s#/#:#g)
IFS=':' read -r -a arr <<< "$datetime"
newname=$(printf "20${arr[2]}${arr[0]}${arr[1]}-${arr[3]}${arr[4]}.csv\n")
echo "Name Change: $file -> $newname"
sed -e '1,7d' < $file > $outdir/$newname
}
for i in "$indir"/*.csv; do
process "$i"
done
Resumo do script
Variáveis e comandos do script:
- indir: O script usando as variáveis indir para o diretório de seus arquivos csv.
- oudir: crie este diretório para os novos arquivos a serem copiados.
- Primeira linha: verifica se o diretório out existe antes de continuar o script.
- arr: Uma variável de matriz para dividir a data e criar o novo nome de arquivo.
- sed: Um editor de texto de linha de comando usado para excluir as linhas indesejadas.