Consolidar dados [RESOLVIDO]

1. Consolidar dados [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 10/04/2020 - 00:58h

Pessoas .. tenho o seguinte script e funciona 100%

#bin/bash

IFS=$(echo -e "\t\n")

dir="/caminho/do/diretório/"
file1="1.pdf"
file2="2.pdf"

ls $dir | while read x;do
if [ ! -e $dir/$x/$file1 ];then
echo "em $x não tem $file1"
fi
if [ ! -e $dir/$x/$file2 ];then
echo "em $x não tem $file2"
fi
done


como faço para ter as seguintes saídas

em $x não tem $file1 
ou
em $x não tem $file2 
ou
em $x não tem $file1 e nem $file2 



  


2. MELHOR RESPOSTA

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 10/04/2020 - 11:12h

Mauriciodez escreveu:

se não tem somente file1
em diretório não tem file1 

se não tem somente file2
em diretório não tem file2 

se não tem nenhum dos dois arquivos
em diretório não tem file1 e nem file2 



Neste caso nem precisa de um loop, testa assim:
#bin/bash

dir="/tmp/testes"
file1="1.txt"
file2="2.txt"

if [ ! -e $dir/$file1 ] && [ ! -e $dir/$file2 ] ; then
echo "Em $dir não tem $file1 nem $file2"
elif [ ! -e $dir/$file1 ] ; then
echo "Em $dir não tem $file1"
elif [ ! -e $dir/$file2 ] ; then
echo "Em $dir não tem $file2"
fi



3. Re: Consolidar dados

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 10/04/2020 - 10:10h

Se entendi corretamente, você quer deixar o script rodando pra detectar caso um dos arquivos for deletado. É isso?

Experimenta assim:
#bin/bash

dir="/tmp/testes"
file1="1.pdf"
file2="2.pdf"

while sleep 1
do
if [ ! -e $dir/$file1 ];then
echo "em $dir não tem $file1"
fi
if [ ! -e $dir/$file2 ];then
echo "em $dir não tem $file2"
fi
done


Se não for isso, explicar melhor aí ;)


4. Re: Consolidar dados

Rogerio
RogerDez

(usa Outra)

Enviado em 10/04/2020 - 10:21h

uma sugestão dentre muitas possíveis:

dir=~
file1=xxx
file2=yyy

ls $dir | while read x;do

unset nofile
for arq in $file1 $file2; do
[ ! -e $dir/$x/$arq ] && nofile+=$arq
done


case "$nofile" in

($file2$file1)
echo "em $x não tem $file1 nem $file2"
;;
(*$file2*)
echo "em $x não tem $file2"
;;
(*$file1*)
echo "em $x não tem $file1"
;;
esac

done


dá para fazer altos testes com o uso de estrela no case, mas neste caso nem precisa dela na vdd
ainda poderia usar um array
ou

dir=~
allfiles=($file1 $file2)


ls $dir | while read x;do
#se x não for um diretório, pular
[[ -d "$x" ]] || continue

unset nofile
for arq in "$allfiles[@]"; do
[ ! -e $dir/$x/$arq ] && nofile+=($arq)
done

[[ -n "${nofile[*]}" ]] && echo "em $dir/$x não tem ${nofile[*]}" 1>&2

done

#deixe os ambientalistas felizes
unset x arq nofile
...



5. Re: Consolidar dados [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 10/04/2020 - 10:25h


Ryuk escreveu:
Se não for isso, explicar melhor aí ;)


velho ... o que eu quero é saídas consolidadas, nesse meu script eu as tenho separadas ...
hoje eu tenho assim
supondo que no diretório eu não tenha nem file1 e nem file2 ele me retorna
em diretório não tem file1
em diretório não tem file2


eu quero que ele teste tudo e só depois de a saída
em diretório não tem file1 e nem file2 


logo ...
se não tem somente file1
em diretório não tem file1 

se não tem somente file2
em diretório não tem file2 

se não tem nenhum dos dois arquivos
em diretório não tem file1 e nem file2 



------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




6. Re: Consolidar dados [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 10/04/2020 - 10:27h


RogerDez escreveu:

uma sugestão dentre muitas possíveis:
...
dá para fazer altos testes com o uso de estrela no case, mas neste caso nem precisa


vou testar e tentar entender o funcionamento

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




7. Re: Consolidar dados [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 10/04/2020 - 11:18h


Ryuk escreveu:

Neste caso nem precisa de um loop, testa assim:
...


velho ... quando recebi o e-mail com tua resposta estava fazendo exatamente do mesmo jeito ....tks ... mas o loop é necessário pois são centenas de diretórios

o meu ficou assim

ls $dir | while read x;do

if [ ! -e $dir/$x/$file1 -a ! -e $dir/$x/$file2 ];then
echo "em $x não tem $file1 e nem $file2"
elif [ ! -e $dir/$x/$file1 ];then
echo "em $x não tem $file1"
elif [ ! -e $dir/$x/$file2 ];then
echo "em $x não tem $file2"
fi

done




------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts