Beleza!!!
Vou testar isso daí o quanto antes, e assim que possível darei retorno.
Muito obrigado pela sua atenção e até mais.
Versão Imprimível
Olá,
Fiz o teste recomentado por você e ficou na mesma. Fiz o seguinte: Criei um script semelhante ao seu exemplo, só que no lugar do "rm -rf" coloquei o "ls -lia" confirme você menciona. A única diferença é que agora o referido script aponta o seguinte erro "./testescript.sh: line 6: /bin/ls: Lista de argumentos muito longa. E agora? Continuo sem endender nada!
Grato e fico no aguardo de um comentário seu.
uhmm...
"lista de argumentos muito longa" isso já é alguma coisa, existe uma limitação no linux com relação a trabalhar com muitos arquivos ao mesmo tempo, não lembro qual variável no /proc precisa ser alterada pra poder trabalhar com arquivos acima do normal. Mas podemos resolver este problema alterando o script.
O script acima deverá listar todos os arquivos do diretório que está no começo dele..Código :
#!/bin/bash cd /caminho/dos/arquivos a="dbf fpt idx prn" for i in $a; do for u in `find . -type f -iname "*.$i" -print 0`; do echo $u done done
Se funcionar é só substituir o "echo" por "rm -f"
O script acima irá tratar arquivo por arquivo, e não arquivos em massa...
cara...
fiz um teste aqui e o script que passei por ultimo não funciona...
os arquivos que você vai trabalhar possuem espaço no nome?
Olá lucianogf,
Os arquivos em questão não teram espaços em branco no seu nome. OK?
O que me dei mais ENCUCADO quanto a essa problema é que as máquinas são semelhantes, os serviços e os pacotes instalados. Em uma funciona e na outra não.
Grato pela atenção.
cara..
fiz um teste nesse script aqui e ele funciona perfeitamente com arquivos que não tem espaço no nome
você só precisa substituir o caminho e a variável $a, se aparecer os nomes normalmente é só trocar o "echo " por "rm -f"Código :
#!/bin/bash -v DIR=/home/luciano/mp3 cd $DIR a="mp3" for i in $a; do find . -type f -iname "*.$i" -print0 | xargs -0 -i% echo % >> $i.txt done for b in $a; do for c in `cat $DIR/$b.txt`; do echo $c done done
valeu