- Duvida em shell
+ Responder ao Tópico
-
Duvida em shell
Pessoal,
Preciso vasculhar recursivamente um diretorio(pegar todos os arquivos e subdiretorios) e rodar um script em cada subdiretorio que ele entra. Esse script que eu quero executar tem varios ifs qie testam os caracteres estranhos gerados nos nomes de arquivos gracas a uma rateada colossal minha, e corrige para os acentos corretamente.
Podemos trocar, voces me conseguem a funcao de recursividade e eu publico pra todo mundo o arquivo .sh completo, e jah vai sanear a duvida de muitos!
-
Duvida em shell
bom com o comando tree vc consegue pegar a arvore de diretorios, to sem ele aki pra pegar a sintaxe dele certinha, suponha q seja tree -d, o script ficaria
for dir in `tree -d`; do
cd $dir; seu comando
done
aaaa o ls tb da pra usar recursividade com ls -R
-
Uhu!!!
Thkz a Lot!!! Pois aqui esta, na integra, um script para renomear arquivos truncados, com carcteres estranhos, e seus respectivos acentos e caracteristicas, como eu eu prometi! O script nao eh todo meu, eu adaptei um que eu achei perdido na internet(desculpa, mas se soubesse de quem eh divulgaria na boa!)
#!/bin/bash
SING=1
numero=0
ENC=0
for nome_arquivo in *
do
echo "$nome_arquivo" | grep -q "á"
if [ $? -eq $ENC ]
then
fname=$nome_arquivo
n=`echo $fname | sed -e "s/á/á/g"`
mv "$fname" "$n"
let "numero += 1"
fi
done
if [ "$numero" -eq "$SING" ]
then
echo "$numero arquivo renomeado."
else
echo "$numero arquivos renomeados."
fi SING=1
numero=0
ENC=0
for nome_arquivo in *
do
echo "$nome_arquivo" | grep -q "ç"
if [ $? -eq $ENC ]
then
fname=$nome_arquivo
n=`echo $fname | sed -e "s/ç/ç/g"`
mv "$fname" "$n"
let "numero += 1"
fi
done
if [ "$numero" -eq "$SING" ]
then
echo "$numero arquivo renomeado."
else
echo "$numero arquivos renomeados."
fi SING=1
numero=0
ENC=0
for nome_arquivo in *
do
echo "$nome_arquivo" | grep -q "çõ"
if [ $? -eq $ENC ]
then
fname=$nome_arquivo
n=`echo $fname | sed -e "s/çõ/çõ/g"`
mv "$fname" "$n"
let "numero += 1"
fi
done
if [ "$numero" -eq "$SING" ]
then
echo "$numero arquivo renomeado."
else
echo "$numero arquivos renomeados."
fi
SING=1
numero=0
ENC=0
for nome_arquivo in *
do
echo "$nome_arquivo" | grep -q "çã"
if [ $? -eq $ENC ]
then
fname=$nome_arquivo
n=`echo $fname | sed -e "s/çã/çã/g"`
mv "$fname" "$n"
let "numero += 1"
fi
done
if [ "$numero" -eq "$SING" ]
then
echo "$numero arquivo renomeado."
else
echo "$numero arquivos renomeados."
fi SING=1
numero=0
ENC=0
for nome_arquivo in *
do
echo "$nome_arquivo" | grep -q "ê"
if [ $? -eq $ENC ]
then
fname=$nome_arquivo
n=`echo $fname | sed -e "s/ê/ê/g"`
mv "$fname" "$n"
let "numero += 1"
fi
done
if [ "$numero" -eq "$SING" ]
then
echo "$numero arquivo renomeado."
else
echo "$numero arquivos renomeados."
fi
SING=1
numero=0
ENC=0
for nome_arquivo in *
do
echo "$nome_arquivo" | grep -q "ú"
if [ $? -eq $ENC ]
then
fname=$nome_arquivo
n=`echo $fname | sed -e "s/ú/ú/g"`
mv "$fname" "$n"
let "numero += 1"
fi
done
if [ "$numero" -eq "$SING" ]
then
echo "$numero arquivo renomeado."
else
echo "$numero arquivos renomeados."
fi
SING=1
numero=0
ENC=0
for nome_arquivo in *
do
echo "$nome_arquivo" | grep -q "ô"
if [ $? -eq $ENC ]
then
fname=$nome_arquivo
n=`echo $fname | sed -e "s/ô/ô/g"`
mv "$fname" "$n"
let "numero += 1"
fi
done
if [ "$numero" -eq "$SING" ]
then
echo "$numero arquivo renomeado."
else
echo "$numero arquivos renomeados."
fi
SING=1
numero=0
ENC=0
for nome_arquivo in *
do
echo "$nome_arquivo" | grep -q "Ã"
if [ $? -eq $ENC ]
then
fname=$nome_arquivo
n=`echo $fname | sed -e "s/Ã/í/g"`
mv "$fname" "$n"
let "numero += 1"
fi
done
if [ "$numero" -eq "$SING" ]
then
echo "$numero arquivo renomeado."
else
echo "$numero arquivos renomeados."
fi
-
ops...
faltou o final, mas vcs sabem como terminar! Na verdade eh uma gambiarra violenta esse script, mas funciona, entao, dane-se a etica.
Ass. O anti-etico