Deletar arquivos de acordo com palavras [RESOLVIDO]

1. Deletar arquivos de acordo com palavras [RESOLVIDO]

William Brasil
wbrasil

(usa Ubuntu)

Enviado em 25/06/2010 - 22:47h

Olá galera, blz? sou novo aqui e espero estar postando no lugar certo hehe

Seguinte...

Eu queria fazer um script que verificasse todos os arquivos que começassem com um prefixo especifico ( tipo "abc), buscando nesses arquivos uma palavra desejada ( tipo "oi" ), passada por parâmetro. Ai tenho que deletar esses arquivos. Como posso fazer??

Obrigado desde já!




  


2. MELHOR RESPOSTA

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 28/06/2010 - 20:26h

ok, o Teixeira esta coberto de razão quado diz "Mas preste atenção para não deixar as coisas MUITO automáticas." com se trata de um script de remoção de arquivo, se por um leve descuido ele for executado no /etc por exemplo, aposto que faira um belo estrago rsrsrs, refletindo sobre o pensamento dele acho que eu criaria uma tomada de decisão, somente para ter certeza se devo apagar ou não o arquivo modifiquei novamente o script:
.
.
#!/bin/bash

funcao1(){
echo -ne "\e[33;1m deseja realmente apagar o arquivo: \e[m \e[32,1 $file \e[m ? "
read -n1 verifica
case "$verifica" in
s) rm $file; echo -e "arquivo \e[21;7;5m $file \e[0m removido";;
n) echo -e "\e[21;7;5m proximo \e[0m";;
*) echo ;echo "digite \"s\" para apagar ou \"n\" para ir ao proximo"; funcao1;
esac
}
echo -n "Digite uma parte do nome do arquivo: "
read arqnome
echo -n "Procurar por palavra: "
read busca
for file in `find . -iname "${arqnome}*"`
do
cat $file 2>/dev/null | grep "$busca" 1>/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
echo -e "\e[34;1m Arquivo: \e[m $file"
echo -e "\e[31;1m Conteudo: \e[m `cat $file | grep "$busca"`"
funcao1
fi
done
criei uma função que, apos mostra o nome do arquivo e a linha com a fraze escolhida, pergunra se vc deseja realmente pagar o arquivo, caso nao queira ele continua vasculhando até acabar a pesquisa.
acredito que isso possa fazer toda a diferença, valeu Teixeira o caso do Orson Scatt Gart é verídico, eu não avia me atentado para a responsabilidade do script, aja vista que o mesmo pode causar algum dando por mau uso, mas com essa tomada de decisão a responsabilidade fica com o usuário e não com o escript (me senti um noob agora.).Em fim espero estar certo agora, e desculpa wbrasil pela minha falta de visão espero que esse escript ajude agora...
---
(°>
//\
V_/_
Free, Powerful and safe
GNU Slackware Linux

3. Re: Deletar arquivos de acordo com palavras [RESOLVIDO]

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 25/06/2010 - 23:06h

cara, para começar a te ajudar podemos fazer assim:

#!/bin/bash
echo -n "Procurar por: "
read busca ;
for file in `find . -iname "*.*"`
do
cat $file 2>/dev/null | grep "$busca" 1>/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
echo -e "\e[34;1m Arquivo: \e[m $file"
echo -e "\e[31;1m Conteudo: \e[m `cat $file | grep "$busca"`"
fi
done

com base nisso podemos vasculhar em todos os arquivos existentes no diretório com a frase (por exemplo "oi") e imprimir na tela o nome do arquivo e a linha inteira que contei a palavra oi.
se vc quiser apagar o arquivo diretamente troque os echos dentro do if por " rm $file "
vc pode usar esse script para criar um outro ainda melhor... espero que ajude....


---
(°>
//\
V_/_
Free, Powerful and safe
GNU Slackware Linux


4. Re: Deletar arquivos de acordo com palavras [RESOLVIDO]

William Brasil
wbrasil

(usa Ubuntu)

Enviado em 25/06/2010 - 23:12h

hum, bem interessante... obrigado pela resposta parceiro =)

com esse script, ele vai verificar somente os arquivos que eu queira? por exemplo, se eu quiser pesquisar no diretório todos os arquivos que comecem com "abc" --> abc1.txt abc2.txt, ele vai pesquisar a palavra "oi" somente nesses arquivos e ai deletá-los?

Abraços!


5. Re: Deletar arquivos de acordo com palavras [RESOLVIDO]

Hudson Moreira Guimaraes dos Santos
hudyfx

(usa Outra)

Enviado em 25/06/2010 - 23:50h

negativo, esse script vai vaculhar todos os arquivos dentro da pasta sem exceção o *.* a linha for file in `find . -iname "*.*"` deicha isso bem claro mas podemos melhorar, para uma busca seletiva poderiamos fazer assim:
.
.
.
.
.
#!/bin/bash
echo -n "Digite uma parte do nome do arquivo: "
read arqnome
echo -n "Procurar por palavra: "
read busca ;
for file in `find . -iname "${arqnome}*"`
do
cat $file 2>/dev/null | grep "$busca" 1>/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
echo -e "\e[34;1m Arquivo: \e[m $file"
echo -e "\e[31;1m Conteudo: \e[m `cat $file | grep "$busca"`"
fi
done

na linha for file in `find . -iname "${arqnome}*"`
o ${arqnome}* diz que iremos procurar todo o arquivo que começa com o conteúdo da variável, se escrevermos, por exemplo a palavra abc e tivermos vários arquivos que comesse com esse conjunto de caracteres por exemplo abcfh.txt ou abcxyz.txt ele tomara a ação desejada, no caso pedi que apenas mostrasse com um echo o nome e o conteudo do arquivo, mas no seu caso vc pode dar um rm como avia recomendado antes. acredito que isso pode te ajudar...


---
(°>
//\
V_/_
Free, Powerful and safe
GNU Slackware Linux


6. Re: Deletar arquivos de acordo com palavras [RESOLVIDO]

William Brasil
wbrasil

(usa Ubuntu)

Enviado em 26/06/2010 - 11:36h

uhum, com certeza me ajuda sim! fica bem mais dinâmico...

vou fazer uns testes e digo pra ti se deu certo, ok?

desculpe demora em responder hehe

abraços e obrigado!


7. Re: Deletar arquivos de acordo com palavras [RESOLVIDO]

Sergio Teixeira - Linux User # 499126
Teixeira

(usa Linux Mint)

Enviado em 26/06/2010 - 14:21h

Mas preste atenção para não deixar as coisas MUITO automáticas. No princípio, e até desenvolver MUITO o seu script, você deverá fazer uma crítica "A OLHO" par ver ser não está tomando trechos de vocábulos.
No caso de uma busca por "oi", será muito fácil achar "boi", "foi", "pois", "moicano", "oitava" e "goiaba", por exemplo.
"oi" poderá também estar no início da frase (como em "Oi, Fulano!").
O conhecido comentarista Orson Scatt Gart relata que fizeram uso de um script desse tipo com a finalidade de "corrigir" todos os textos que chegassem à redação. O resultado é que a palavra "disc" foi substituída por "disk", o que gerou uma série da "palavras novas" como "diskover", "diskovery", etc.


8. Re: Deletar arquivos de acordo com palavras [RESOLVIDO]

William Brasil
wbrasil

(usa Ubuntu)

Enviado em 26/06/2010 - 18:24h

bem salientado... no caso, como preciso localizar palavras, axo q resolve sim... pois naum preciso checar inicio, nem fim de palavra, só ela mesmo... agora, se fosse preciso ver prefixo, sufixo ou ainda determinados caracteres na palavra, ai sim teria que mudar o script...

como que faria pra verificar a palavra passada no meio dos caracteres de uma palavra em um arquivo?

abraços


9. Re: Deletar arquivos de acordo com palavras [RESOLVIDO]

William Brasil
wbrasil

(usa Ubuntu)

Enviado em 28/06/2010 - 22:03h

imagina... vc me ajudou e mt... mt importante isso realmente, de ter a certeza ao deletar arquivos, e principalmente, de deletar o correto...

obrigado pela ajuda!!! vou estar sempre por aqui, o povo é 10!

Abraços!








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts