Ajuda comandos de lista [RESOLVIDO]

1. Ajuda comandos de lista [RESOLVIDO]

Monteiro
werwolf

(usa Debian)

Enviado em 20/02/2013 - 02:48h

Ola pessoal !

seguinte tenho um shell que procura arquivos em varias pastas redirecionando os erros da procura para um certo arquivo... até ai ok ... oque eu queria era que se dava para ele alem de procurar nas pastas ele também gere um arquivo .txt com o caminho dos arquivos onde eles foram encontrados .... alguém pode ajudar ?


  


2. Re: Ajuda comandos de lista [RESOLVIDO]

Lucas Doná Sfalcin
lucasdona

(usa Linux Mint)

Enviado em 20/02/2013 - 09:53h

Se usar o find ele já acha o arquivo mostrando o caminho completo, ajudaria:
Exemplo 1, procura no diretório do usuario:
find /home/usuario -name arquivo.txt 

Se o arquivo for encontrado aparecerá no shell:
/home/usuario/arquivo.txt 

Exemplo 2, procura desde a raiz (necessário root):
find / -name arquivo.txt 

Se o arquivo for encontrado aparecerá no shell o caminho completo:
/etc/init/arquivo.txt 



3. Re: Ajuda comandos de lista [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 20/02/2013 - 10:12h

werwolf escreveu:

Ola pessoal !

seguinte tenho um shell que procura arquivos em varias pastas redirecionando os erros da procura para um certo arquivo... até ai ok ... oque eu queria era que se dava para ele alem de procurar nas pastas ele também gere um arquivo .txt com o caminho dos arquivos onde eles foram encontrados .... alguém pode ajudar ?


Pega o comando que você usa pra isso e adicione ao final dele
 >> ~/nomearquivo.txt  

Isso vai direcionar a saída do comando para o arquivo ~/nomearquivo.txt


4. Re: Ajuda comandos de lista [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/02/2013 - 10:18h

lucasdona escreveu:

Se usar o find ele já acha o arquivo mostrando o caminho completo, ajudaria:
Exemplo 1, procura no diretório do usuario:
find /home/usuario -name arquivo.txt 

Se o arquivo for encontrado aparecerá no shell:
/home/usuario/arquivo.txt 

Exemplo 2, procura desde a raiz (necessário root):
find / -name arquivo.txt 

Se o arquivo for encontrado aparecerá no shell o caminho completo:
/etc/init/arquivo.txt 


Ou seja, é só direcionar a saída padrão do find para um arquivo. Exemplo, do que estou imaginando para seu caso:

# find / -name <arquivo a ser procurado> >> lista_arquivos_encontrados.txt 2>> erros.txt

Flws.


5. Re: Ajuda comandos de lista [RESOLVIDO]

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 20/02/2013 - 10:20h

pmartelotta escreveu:

lucasdona escreveu:

Se usar o find ele já acha o arquivo mostrando o caminho completo, ajudaria:
Exemplo 1, procura no diretório do usuario:
find /home/usuario -name arquivo.txt 

Se o arquivo for encontrado aparecerá no shell:
/home/usuario/arquivo.txt 

Exemplo 2, procura desde a raiz (necessário root):
find / -name arquivo.txt 

Se o arquivo for encontrado aparecerá no shell o caminho completo:
/etc/init/arquivo.txt 


Ou seja, é só direcionar a saída padrão do find para um arquivo. Exemplo, do que estou imaginando para seu caso:

# find / -name <arquivo a ser procurado> >> lista_arquivos_encontrados.txt 2>> erros.txt

Flws.


Boa sugestão de redirecionar os erros de processamento pra outro arquivo, assim, se der pau ele saberá porque.


6. Vlw a todos

Monteiro
werwolf

(usa Debian)

Enviado em 20/02/2013 - 13:17h

pessoal eu tinha me esquecido do find XD mais me sobrou so mais uma questão ...

e quando se trata de tipo uns 30 arquivos kkkkkk diferentes de estenção diferente também ?

vou ter que criar 1 find para cada um deles ?


7. Re: Ajuda comandos de lista [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 20/02/2013 - 13:35h

basta colocar um " .* ".

Exemplo: $ find / -iname config.*


Vc tb pode utilizar o caracter "?", ele representa apenas um caracter, diferente do "*" que aponta qtos caracteres tiverem, sem limites.

Por exemplo, se vc quiser buscar arquivos com o nome "diario" mas que contenha a extensão ".log", vc busca da seguinte forma:

$ find / -name diario.???


Caso a extensão seja ".outs", vc faria (com 4 "?"):

$ find / -name diario.????


E por aí vai..


8. lista

Monteiro
werwolf

(usa Debian)

Enviado em 20/02/2013 - 13:46h

Meu amigo alexandregms muito obrigado pela dica mais creio que não tenha me entendido direito ...

são 30 arquivos com nomes diferentes e extensões diferentes ..... :)


9. Re: Ajuda comandos de lista [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 20/02/2013 - 14:46h

Opa, vamos a resolução do que vc quer, porém com a construção de um pequeno script:


#!/bin/bash

FILE=`cat arquivo.txt`

for j in $(echo $FILE)
do

find / -name "$j" 2> /dev/null

done



Para facilitar sua vida, o arquivos que vc deseja buscar estarão em um arquivo externo, chamado arquivos.txt. Basta vc inserir o que vc deseja neste arquivo e executar o seu script.

Qualquer dúvida só postar!


10. Re: Ajuda comandos de lista [RESOLVIDO]

Lucas Doná Sfalcin
lucasdona

(usa Linux Mint)

Enviado em 20/02/2013 - 14:52h

Você pode usar o sed para fazer isso, exemplo de 30 arquivos ficaria +- assim:

NUM_ARQUIVOS=$(cat lista_arquivos.txt | wc -l) #conta quantas linhas o arquivo tem, cada arquivo em uma linha
CONT_LINHA=1
while [ $CONT_LINHA -gt $NUM_ARQUIVOS ] # quando for gt (maior) significa que chegou no final
do
NOME_ARQ=$(sed -n "$CONT_LINHA p" aaa.txt) # vai listar linha por linha
find / -name $NOME_ARQ >> caminho_do_arquivo.txt
done


Acho que é assim, pode ter algum erro de sintaxe aí, mas a lógica pode ser essa


11. Re: Ajuda comandos de lista [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/02/2013 - 14:58h

alexandregms escreveu:

Opa, vamos a resolução do que vc quer, porém com a construção de um pequeno script:


#!/bin/bash

FILE=`cat arquivo.txt`

for j in $(echo $FILE)
do

find / -name "$j" 2> /dev/null

done



Para facilitar sua vida, o arquivos que vc deseja buscar estarão em um arquivo externo, chamado arquivos.txt. Basta vc inserir o que vc deseja neste arquivo e executar o seu script.

Qualquer dúvida só postar!


Exatamente, só que eu faria um pouquinho diferente, lembrando que ele joga possível erro em um arquivo e cria sua lista de arquivos encontrados:


for i in $(cat arquivos_buscar.txt)
do
find / -name ${i} >> lista_arquivos_encontrados.txt 2>> erros.txt
done


Lembrando que não precisa necessariamente colocar a extensão .txt nos arquivos.

Flw.


12. Ultima questão !

Monteiro
werwolf

(usa Debian)

Enviado em 20/02/2013 - 15:23h

Segue meu script


#!/bin/bash

tput smso
echo ___________________________________________________________________
echo ++++++++++++ARQUIVOS DA CONFERENCIA++++++++++++++
echo ___________________________________________________________________
tput rmso

cd /home/matheus/Documentos/fs1/i/sftp/enviado
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> > /tmp/lista.txt 2> /tmp/lost.txt

cd /home/matheus/Documentos/fs1/i/ftp/enviado
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/lista.txt 2>> /tmp/lost.txt

cd /home/matheus/Documentos/fs1/i/sftp/enviar
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/lista.txt 2>> /tmp/lost.txt

cd /home/matheus/Documentos/fs1/i/ftp/enviar
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/lista.txt 2>> /tmp/lost.txt

cd /home/matheus/Documentos/fs1/bk
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/lista.txt 2>> /tmp/lost.txt

tput smso
echo ___________________________ > /tmp/topsemanal.txt
echo +++++++++SEMANAIS++++++++++ >> /tmp/topsemanal.txt
echo ___________________________ >> /tmp/topsemanal.txt
tput rmso


cd /home/user/Documentos/fs1/i/ftp/enviado
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> > /tmp/semanal.txt 2>> /tmp/lost.txt

cd /home/user/Documentos/fs1/i/sftp/enviado
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> 2>> /tmp/lost.txt

cd /home/user/Documentos/fs1/i/sftp/enviar
ls -lrt u <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> 2>> /tmp/lost.txt

cd /home/user/Documentos/fs1/integra/ftp/enviar
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/semanal.txt 2>> /tmp/lost.txt

cd /home/user/Documentos/fs1/bk
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/semanal.txt 2>> /tmp/lost.txt

echo ___________________________ > /tmp/topmensal.txt
echo ++++++++++MENSAI+++++++++++ >> /tmp/topmensal.txt
echo ___________________________ >> /tmp/topmensal.txt

cd /home/user/Documentos/fs1/i/ftp/enviado
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> > /tmp/mensal.txt 2>> /tmp/lost.txt

cd /home/user/Documentos/fs1/i/sftp/enviado
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/mensal.txt 2>> /tmp/lost.txt

cd /home/user/Documentos/fs1/integra/sftp/enviar
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/mensal.txt 2>> /tmp/lost.txt


cd /home/user/Documentos/fs1/i/ftp/enviar
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/mensal.txt 2>> /tmp/lost.txt

cd /home/user/Documentos/fs1/bk
ls -lrt <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> <arquivo> >> /tmp/mensal.txt 2>> /tmp/lost.txt



(cat /tmp/semanal.txt | cut -f5 -d" " > /tmp/semanalsize.txt)

(cat /tmp/semanal.txt | cut -f9 -d" " > /tmp/semanalname.txt)

(paste /tmp/semanalname.txt /tmp/semanalsize.txt > /tmp/semanallista.txt | 'sort' )

(paste -s -d'\n' /tmp/topsemanal.txt /tmp/semanallista.txt > /tmp/semanalfull.txt)

(cat /tmp/lista.txt | cut -f5 -d" " > /tmp/size.txt )

(cat /tmp/lista.txt | cut -f9 -d" " > /tmp/name.txt )

(paste /tmp/name.txt /tmp/size.txt > /tmp/lista2.txt | 'sort')

(cat /tmp/mensal.txt | cut -f5 -d" " > /tmp/mensalsize.txt)

(cat /tmp/mensal.txt | cut -f9 -d" " > /tmp/mensalname.txt)

(paste /tmp/mensalname.txt /tmp/mensalsize.txt > /tmp/mensallista.txt | 'sort')

(paste -s -d'\n' /tmp/topmensal.txt /tmp/mensallista.txt > /tmp/mensalfull.txt )

(paste -s -d'\n' /tmp/semanalfull.txt /tmp/mensalfull.txt > /tmp/lista3.txt )

(paste -d'\t\n' /tmp/lista2.txt /tmp/lista3.txt > /tmp/listafinal.txt )

(cat /tmp/listafinal.txt)

(paste -s -d'\n' /tmp/lista2.txt /tmp/mensallista.txt /tmp/mensallista.txt > /home/matheus/Documentos/fs1/enviados.txt)

cd /tmp

rm semanalsize.txt semanalname.txt semanallista.txt topsemanal.txt semanalfull.txt size.txt name.txt lista2.txt mensalname.txt mensalsize.txt mensal.txt mensallista.txt mensalfull.txt lista3.txt


Bom pessoal então dentro desse Script posso utilizar qual quer uma dessas opções que vocês me deram .... lembrando que o script faz o seguinte pesquisa os mesmo arquivos em pastas diferentes e retorna somente o resultado do nome e tamanho do arquivo .... e o que eu queria é que ele criasse um arquivo listando o caminho em que os arquivos corretos foram achados ..... lembrando que esses arquivos nem sempre são gerados nos mesmo directórios por isso toda essa pesquisa ....






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts