bom dia,
gostaria de fazer um comando com o grep que todo o arquivo que tivesse a palavra "mp3" fosse apagado..
maneira errada que fiz...
grep -ir mp3 * | rm {} /;
valeu,
Cleiton
bom dia,
gostaria de fazer um comando com o grep que todo o arquivo que tivesse a palavra "mp3" fosse apagado..
maneira errada que fiz...
grep -ir mp3 * | rm {} /;
valeu,
Cleiton
vc pode fazer assim o
find / -name *.mp3 >> /mp3
ele ira criar um arquivo assim
/222.mp3
/2d22.mp3
/22.mp3
/mydnsche/var/www/pages/freon.com.br/home/Diversas/Menina.mp3
ele ira procurar em todo o disco e jogar o resultado neste arquivo
dai vc cria um exec par aapagar
#! /bin/sh
for apagar in `cat /mp3`; do
rm $apagar
done
eu façi assim
Salve!
O problema em se usar um:
Código :#! /bin/sh for apagar in `cat /mp3`; do rm $apagar done
é que se o nome do arquivo tiver espaço não vai funcionar (ou se tiver sorte poderá deletar outro arquivo, hehe). Acrescente um novo IFS, para que deixe de ser espaços e passe a ser quebra de linha, e também envolva o $apagar entre aspas:
Código :#! /bin/sh IFS=" "; for apagar in `cat /mp3`; do rm "$apagar" done
Tente utilizar:
find / -name *.mp3 -exec rm {} \
Mas dependendo do tamanho da saída ele pode não funcionar... e vou aproveitar para perguntar pra vocês o que pode ser o problema
Uma vez eu impelentei esse comando para apagar arquivos de impressão gerados pelo sistema aqui da empresa que trabalho, em média de 1000/1500 arquivos diários, e não funcionou me retornando essa mensagem:
/usr/bin/find: Too many arguments
Não lembro exatamente a mensagem de erro, mas é algo assim, amanhã no trampo posso ver certo, se precisar.
O que pode ser isso ? Configurações do kernel ? :?
Para conseguir apagar os arquivos, fiz um script parecido com os dos amigos acima.
Mas não corro o risco de nomes de arquivos com espaços ou caracteres especiais.
Valewww
galera..
adaptei um script q já tinha aqui...
fiz alguns testes e funcionou legal....
----------------------------------------
#!/bin/bash
find / -name "*.mp3" > /root/mp3.db
arquivo=`cat /root/mp3.db`
lines=$(echo "${arquivo}" | wc -l)
currline=;oldline=;
for ((counter=1; counter <= $lines; counter=$((${counter} + 1)))); do
currline="$(echo "${arquivo}" | head -n ${counter} | tail -n 1)"
if [ "${currline}" != "${oldline}" ]; then
oldline="${currline}"
rm "${currline}"
#echo "${currline}"
fi
done
----------------------------------------
Obs.: Verifiquem possíveis erros neste script, não me responsabilizo por perca de dados..
valew
[]'s
ahh...
testem como outro usuário no lugar de root e alterem o diretório no script..
assim evita-se alguma coisa errada...
find / -name *.mp3 > $TEMP1
awk '{ print "rm -rf \""$0"\" ./ "}' $TEMP1 | sh
isso resolve o problema dos espaços
Amigo quecosuix,
Como não vi resposta para sua pergunta nas respostas anteriores la vai...
Você não precisa de um script tao elaborado pra remover arquivos que contem uma determinada string
Primeiramente digite:
man grep
man xargs
Depois é simples:
fgrep "mp3" * -rl |xargs rm -rf
Falou!
fala mvzeppelin...Postado originalmente por mvzeppelin
vc nao viu resposta ou não entendeu as respostas acima postadas??
chegou pelo menos testá-las?
para uma pergunta podem existir N respostas, algumas imples outras complexas, e outras q não funcionem...
valew