Script de Validação

1. Script de Validação

Felipe S C
blazebr

(usa Ubuntu)

Enviado em 13/10/2016 - 16:38h

Estou enfrentando um problema para criar um script que execute um ls em um diretório, pegue a saída do comando linha por linha, verifique se a linha existe dentro de um txt e se não existir gravar o não encontrado em um arquivo.

#!/bin/bash

exec 3< <(ls /home/backup)

while read arq <&3; do
grep "$arq" ddc.txt <$var
if [$var -z]; then
echo "$arq" >> completar.txt
done

exec 3<&-

Ao executar eu recebo um erro de sintaxe devido ao done.
Poderiam me auxiliar?


  


2. Re: Script de Validação

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/10/2016 - 17:26h

blazebr escreveu:

Estou enfrentando um problema para criar um script que execute um ls em um diretório, pegue a saída do comando linha por linha, verifique se a linha existe dentro de um txt e se não existir gravar o não encontrado em um arquivo.

#!/bin/bash

exec 3< <(ls /home/backup)

while read arq <&3; do
grep "$arq" ddc.txt <$var
if [$var -z]; then
echo "$arq" >> completar.txt
done
exec 3<&-

Ao executar eu recebo um erro de sintaxe devido ao done.
Poderiam me auxiliar?


Boa tarde Blazer, segue sugestão:
#!/bin/bash
ls -1 /home/backup > ARQ01
while read line;do
if ! egrep "^$line$" ARQ02;then #SE NÃO ENCONTRAR .....
echo "$line" >> ARQ03 #ENVIA P/ O OUTRO ARQUIVO
fi
done<ARQ01


Att.:
Marcelo Oliver





3. Re: Script de Validação

Felipe S C
blazebr

(usa Ubuntu)

Enviado em 13/10/2016 - 18:45h

Obrigado msoliver,

Mas não foi conforme o esperado. No ARQ01 eu tenho a informação correta (Conteúdo do diretório), no ARQ02 eu utilizei o arquivo com o conteúdo para busca e no ARQ03 eu tenho um conteúdo idêntico ao ARQ01(provavelmente devido a falha na busca).

No ARQ02 as linhas possuem o path completo para o arquivo ou diretório (xyz/dda/xzd).

Ex.
ARQ01
O Silmarillion - J.R.R. Tolkien.mobi
ARQ02
2854409 Books/Mobi/O Silmarillion - J.R.R. Tolkien.mobi




4. Re: Script de Validação

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/10/2016 - 19:33h

blazebr escreveu:

Obrigado msoliver,

Mas não foi conforme o esperado. No ARQ01 eu tenho a informação correta (Conteúdo do diretório), no ARQ02 eu utilizei o arquivo com o conteúdo para busca e no ARQ03 eu tenho um conteúdo idêntico ao ARQ01(provavelmente devido a falha na busca).

No ARQ02 as linhas possuem o path completo para o arquivo ou diretório (xyz/dda/xzd).

Ex.
ARQ01
O Silmarillion - J.R.R. Tolkien.mobi
ARQ02
2854409 Books/Mobi/O Silmarillion - J.R.R. Tolkien.mobi


Blazer, teste com essa pequena alteração:
#!/bin/bash
#CONSIDERANDO que o ARQ02, tenha o TAMANHO, CAMINHO e o NOME_DO_ARQUIVO
ls -l /home/backup/*.*|awk '{print $5,$9}' > ARQ01
while read line;do
if ! egrep "$line" ARQ02;then #SE NÃO ENCONTRAR .....
echo "$line" >> ARQ03 #ENVIA P/ O OUTRO ARQUIVO
fi
done<ARQ01


marcelo oliver



5. Re: Script de Validação

Felipe S C
blazebr

(usa Ubuntu)

Enviado em 13/10/2016 - 23:06h

Mais uma vez obrigado Marcelo.

Desta vez o resultado foi um pouco melhor, mas os nomes com espaço foram separados e cada palavra foi para a busca.
Com os nomes sem espaço o resultado foi o esperado.


6. Re: Script de Validação

Felipe S C
blazebr

(usa Ubuntu)

Enviado em 14/10/2016 - 01:21h

Marcelo,

Consegui algo legal com o código abaixo:

#!/bin/bash

exec 3< <(ls /home/backup)

while read arq <&3; do
var=`grep -e "$arq" ARQ02`
if [ "$?" -ne 0 ] ; then
echo "$arq" >> result
fi
done

exec 3<&-


O único problema é que os nomes com "[ colchetes ]" vão diretamente para o result. Alguma forma de passar para o shell os colchetes como texto ou algo semelhante?


7. Re: Script de Validação

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/10/2016 - 09:34h

blazebr escreveu:

Marcelo,

Consegui algo legal com o código abaixo:

#!/bin/bash
exec 3< <(ls /home/backup)
while read arq <&3; do
var=`grep -e "$arq" ARQ02`
if [ "$?" -ne 0 ] ; then
echo "$arq" >> result
fi
done
exec 3<&-


O único problema é que os nomes com "[ colchetes ]" vão diretamente para o result. Alguma forma de passar para o shell os colchetes como texto ou algo semelhante?

---------------------------------------------------------------------
Não "previ" esses "problemas" no nome dos arquivos . . .
Alguma forma de passar para o shell os colchetes como texto ou algo semelhante?
Sim! Escape-os . . . \[ colchetes \]

marcelo oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts