Ler arquivo e transferir

1. Ler arquivo e transferir

Manoel Júnior
manoel.junior

(usa Red Hat)

Enviado em 20/06/2018 - 13:43h

Boa tarde pessoal, tudo bem?

Tenho um diretório com vários arquivos, queria ler esses arquivos e caso contivesse dentro de um desses arquivos na linha 13 coluna 24 o conteúdo "System Error", gostaria de mover esse arquivo para um outro diretório.

Podem me ajudar nesse desenvolvimento?

Obrigado.


  


2. Re: Ler arquivo e transferir

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 20/06/2018 - 14:50h

Manoel,

Segue um script Python para realizar essa verificação movendo os arquivos:
import os
import shutil

# Diretórios de origem e de destino dos arquivos
diretorioArquivos = 'origem'
diretoriaDestino = 'destino'

for nomeArquivo in os.listdir(diretorioArquivos):
# Lendo as linhas do arquivo
linhas = [linha.rstrip('\n') for linha in open(diretorioArquivos+'/'+nomeArquivo)]

# 13o Linha do arquivo
linhaAnalizada = linhas[12]

# Verificando se existe 'System Error' nessa linha
if 'System Error' in linhaAnalizada:
# Movendo o arquivo
shutil.move(diretorioArquivos+'/'+nomeArquivo, diretoriaDestino+'/'+nomeArquivo)
print(f'{nomeArquivo} - Movido')
else:
print(f'{nomeArquivo} - Mantido')


Caso você não queira nenhuma mensagem de debug, utilize esse outro.
import os
import shutil

# Diretórios de origem e de destino dos arquivos
diretorioArquivos = 'origem'
diretoriaDestino = 'destino'

for nomeArquivo in os.listdir(diretorioArquivos):
# Lendo as linhas do arquivo
linhas = [linha.rstrip('\n') for linha in open(diretorioArquivos+'/'+nomeArquivo)]

# 13o Linha do arquivo
linhaAnalizada = linhas[12]

# Verificando se existe 'System Error' nessa linha
if 'System Error' in linhaAnalizada:
# Movendo o arquivo
shutil.move(diretorioArquivos+'/'+nomeArquivo, diretoriaDestino+'/'+nomeArquivo)

Abraço,
Diego M. Rodrigues


3. Re: Ler arquivo e transferir

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 20/06/2018 - 15:44h

manoel.junior escreveu:

Boa tarde pessoal, tudo bem?

Tenho um diretório com vários arquivos, queria ler esses arquivos e caso contivesse dentro de um desses arquivos na linha 13 coluna 24 o conteúdo "System Error", gostaria de mover esse arquivo para um outro diretório.

Podem me ajudar nesse desenvolvimento?

Obrigado.


V aí se ajuda
#!/bin/bash

DIR="/caminho/do/diretório/busca"
DESTINO="/caminho/do/diretório/destino"

for x in `ls $DIR`; do

txt=`cat $DIR/$x | awk '{print $5 }' | head -n7 | tail -n1`

if [ "$txt" == "System Error" ]; then
mv $DIR/$x $DESTINO
else
echo "não contem >> $txt"
fi

done


NOTA: só não deu para testar pq estou no cel ... qualquer coisa da o grito aí !!

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

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

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



4. Re: Ler arquivo e transferir

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 20/06/2018 - 21:32h

manoel.junior escreveu:

Boa tarde pessoal, tudo bem?
Tenho um diretório com vários arquivos, queria ler esses arquivos e caso contivesse dentro de um desses arquivos na linha 13 coluna 24 o conteúdo "System Error", gostaria de mover esse arquivo para um outro diretório.
Podem me ajudar nesse desenvolvimento?
Obrigado.


Boa noite Manoel.
Segue sugestão:

#!/bin/bash
ORIGEM="dir1/";DESTINO="dir2/";
for arq in $(ls -1 ${ORIGEM}*.*);do
[[ $(awk -F"," 'NR==13 && $24 ~ /^System Error$/ {print $24}' $arq) ]] && mv "$arq" $DESTINO
done

No comando "awk", adeque o separador ao utilizado no seu arquivo.
Marcelo Oliver


5. Re: Ler arquivo e transferir

Manoel Júnior
manoel.junior

(usa Red Hat)

Enviado em 22/06/2018 - 11:45h

Fala meu amigo msoliver, grande cara! Obrigado pela ajuda e gostaria de fazer mais um pedido nesse script. O usuário acabou de me informar que nessa linha 13 coluna 24 encontra-se o nome do arquivo que se tem que mover, eu pensei que era pra mover o próprio arquivo, mas ele quer mover o arquivo cujo nome está nessa linha e coluna. Como eu faria essa alteração com seu script?

Obrigado.

Boa noite Manoel.
Segue sugestão:

#!/bin/bash
ORIGEM="dir1/";DESTINO="dir2/";
for arq in $(ls -1 ${ORIGEM}*.*);do
[[ $(awk -F"," 'NR==13 && $24 ~ /^System Error$/ {print $24}' $arq) ]] && mv "$arq" $DESTINO
done

No comando "awk", adeque o separador ao utilizado no seu arquivo.
Marcelo Oliver



6. Re: Ler arquivo e transferir

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/06/2018 - 12:10h

manoel.junior escreveu:

Fala meu amigo msoliver, grande cara!
Obrigado pela ajuda e gostaria de fazer mais um pedido nesse script.
O usuário acabou de me informar que nessa linha 13 coluna 24 encontra-se o nome do arquivo que se tem que mover, eu pensei que era pra mover o próprio arquivo, mas ele quer mover o arquivo cujo nome está nessa linha e coluna.
Como eu faria essa alteração com seu script?

Obrigado.

Boa noite Manoel.
Segue sugestão:

#!/bin/bash
ORIGEM="dir1/";DESTINO="dir2/";
for arq in $(ls -1 ${ORIGEM}*.*);do
[[ $(awk -F"," 'NR==13 && $24 ~ /^System Error$/ {print $24}' $arq) ]] && mv "$arq" $DESTINO
done

No comando "awk", adeque o separador ao utilizado no seu arquivo.
Marcelo Oliver

Boa tarde Manoel.
Vamos ver se entendi ...
Na coluna 24, tem o nome do arquivo que é para mover?
Isso em todas "LINHA 13" ?
O ARQUIVO em questão (LINHA13, COLUNA 24), tem uma extensão especifica ...?
marcelo oliver



7. Re: Ler arquivo e transferir

Manoel Júnior
manoel.junior

(usa Red Hat)

Enviado em 22/06/2018 - 12:15h

Boa tarde Manoel.
Vamos ver se entendi ...
Na coluna 24, tem o nome do arquivo que é para mover?
Isso em todas "LINHA 13" ?
O ARQUIVO em questão (LINHA13, COLUNA 24), tem uma extensão especifica ...?
marcelo oliver


Exato meu amigo. Tem uma extensão sim, são todos arquivos com a extensão TXT.

Obrigado pela ajuda.


8. Re: Ler arquivo e transferir

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/06/2018 - 15:04h

manoel.junior escreveu:

Boa tarde Manoel.
Vamos ver se entendi ...
Na coluna 24, tem o nome do arquivo que é para mover?
Isso em todas "LINHA 13" ?
O ARQUIVO em questão (LINHA13, COLUNA 24), tem uma extensão especifica ...?
marcelo oliver


Exato meu amigo. Tem uma extensão sim, são todos arquivos com a extensão TXT.

Obrigado pela ajuda.

Boa tarde Manoel, dei uma simplificada, segue:
find -iname "*.txt" -type f -exec awk -F"," 'NR==13 && $13 ~ /^[A-Za-z0-9]+.txt$/ {print "mv" ,$13 " DIR_DESTINO"}' {} \;|bash 

OBS.:
Para efeitos de TESTES, troque:
print "mv" ,$13 " DIR_DESTINO"}'  

Por
print "ls -l" ,$13}'  


Funcionando , volte ao original.

Abç.:
Marcelo Oliver



9. Re: Ler arquivo e transferir

Manoel Júnior
manoel.junior

(usa Red Hat)

Enviado em 28/06/2018 - 22:42h

Obrigado amigos e ao amigo Marcelo. Peço desculpas pela demora na resposta, mas tive que me ausentar por uns dias e acabei não entrando aqui.

Amanhã vou olhar o script com mais calma e volto para dar um feedback.

Muito obrigado






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts