Recentemente, me deparei com uma situação inusitada e precisei fazer um shell script para resolver.
Um fornecedor envia uns arquivos para serem processados em ordem de criação, mas não adianta ordenar por data/hora de criação porque é comum criar arquivos retroativos, ou seja, tem que ordenar pelo nome (que contém data e hora no formato DDMMYY).
Por causa do formato de data usado na formação do nome do arquivo, a ordem de processamento por nome também pode falhar.
Formato do nome do arquivo: arq_DDMMYYHHMISS
O script (abaixo), pega a saída do comando "ls", trata parte do nome dos arquivos e ordena por essa parte (no caso, inverte o formato da data contido no nome de cada arquivo).
No final, retorna a lista com o nome completo do arquivo conforme nova ordenação.
Script
_______________________________________________________________
#!/bin/ksh
ls -l >/dev/null 2>/dev/null
if [ $? = 0 ]
then
directory=/home0/users/josbar
if [ -e $directory/temp.txt ]
then
rm $directory/temp.txt
fi
for FILE_RCV in $directory/arqpro*
do
if [ -s $FILE_RCV ]
then
file_name=`basename $FILE_RCV`
seg=$(echo $file_name | cut -c18-19)
min=$(echo $file_name | cut -c16-17)
hor=$(echo $file_name | cut -c14-15)
day=$(echo $file_name | cut -c8-9)
month=$(echo $file_name | cut -c10-11)
year=$(echo $file_name |cut -c12-13)
order_by=$year$month$day$hor$min$seg
echo $order_by - $FILE_RCV >> $directory/temp.txt
fi
done
cat $directory/temp.txt | sort -n | cut -c16-55
fi
_____________________________________________________________
Nenhum comentário:
Postar um comentário