Saida do for em uma única linha

1. Saida do for em uma única linha

Rodrigo
rpbiaggio

(usa Outra)

Enviado em 29/10/2015 - 14:08h

Pessoal,

Tenho um script em shell que verifica se o arquivo esta a mais de 3 horas parado e caso ele esteja direciona a saida para um arquivo.

Preciso que o resultado seja mostrado na tela mas gostaria que ele pegasse a quantidade de arquivos com o status com mais de 3 horas e retornasse apenas conforme o exemplo abaixo:

Exemplo: Total de 30 arquivos parados a mais de 3 horas. Verificar o arquivo de log "arquivo.log"

Conseguem ajudar a ter uma ideia?


dir_origem=/home/coti/scripts/
mascara=??????_????????.csv
mascara1=??????_?????????.csv
tempo="10800"
log_saida=/home/coti/scripts/log.log

cd $dir_origem


function saida ()
{
MIN=$(( $2 / 60 % 60))
HOR=$(( $2 / 60 / 60))
SEG=$(( $2 - ($HOR * 60 * 60 + $MIN * 60) ))
echo "Arquivo $1 esta parado a ${HOR}h${MIN}m${SEG}s" >> $log_saida
}

qtde=`ls $mascara | grep -v total | wc -l`

if [ "$qtde" -gt 0 ]; then
for i in `ls $mascara`
do
hora_atual="`date "+%s"`"
hora_arquivo="`stat -c "%X" $i`"
status="$(( $hora_atual - $hora_arquivo ))"
if [ $status -gt $tempo ]; then
saida $i $status
fi
done
fi
if [ "$status" -gt "$tempo" ]; then
echo Arquivo parado a mais de 3 horas no diretorio
else
echo Arquivo $i dentro do tempo esperado
fi
exit 1



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts