[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] script para renomear arquivos e diretorios recursivam
From: |
Humberto Pereira |
Subject: |
Re: [shell-script] script para renomear arquivos e diretorios recursivamente funcionando!!! |
Date: |
Wed, 20 Sep 2006 11:51:15 -0300 |
User-agent: |
Opera Mail/9.01 (Linux) |
On Wed, 20 Sep 2006 11:13:12 -0300, gleissonmb <address@hidden>
wrote:
Como veem sao dois scripts...funciona mas se fosse um só seria mas
limpo...tentei transformar o corretor.sh numa funcao dentro do script
principla mas nao deu...ideias?
#################### recursive.sh #######################
#!/bin/bash
# Script para corrigir nomes de arquivos e diretorios RECURSIVAMENTE.
# Gleisson Marin Bissa - 20-09-2006 11:03 h
/usr/local/bin/corretor.sh
for i in `cat< <(ls)` ; do
[ -d "$i" ] || continue
dir=`pwd`
cd "$i"
echo trabalhando em "$i"
/usr/local/bin/corretor.sh
$0
cd "$dir"
echo voltando para "$dir"
echo
echo
done
Esse seu recursive.sh pode ser trocado pro um
find ./ -type d
##################### corretor.sh #######################
#!/bin/bash
# Script para corrigir nomes de arquivos e diretorios LOCAL
# Gleisson Marin Bissa - 20-09-2006 11:03 h
c=1
Esse c nao deveria comecar com 0? afinal vc nao corrigiu nenhum arquivo
ainda ;)
for x in * ; do
y=`echo "$x" | tr -s ' ' '-' | tr [:upper:] [:lower:] | sed
'y/�&?ÁÀÃÂÄÉÈẼÊËÍÌĨÎÏÓÒÕÔÖÙÚŨÛüáàãâäéèẽêëíìĩîïóòõôöùúũûü/eeeaaaaaeeeeeiiiiiooooouuuuuaaaaaeeeeeiiiiiooooouuuuu/'`
if [ ! -e $y ]; then let c++
mv "$x" "$y" ; echo Renomeando... "$x" para "$y"
fi
done
Se voce tem arquivos com espaco no nome, esse for vai dar problemas. Voce
deve setar seu IFS p/ '\n';
echo
echo `ls | wc -l` 'Arquivos submetidos!!!'
echo -ne $(($c-1)) Arquivos corrigidos para minúsculo!!!
echo
Jogue tudo do q esta dentro do seu for numa funcao. Algo como:
function corrector() {
x="$1"
y=`echo "$x" ...
...
}
e basta chamar ela depois.
Depois chame seu corrector com um find:
IFS=$'\n'
for file in $(find ./ -type -f -type d); do
corrector "$file"
done
[]s
Humberto Pereira
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/