shell-script-pt
[Top][All Lists]
Advanced

[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/&#65533;&?ÁÀÃÂÄÉÈ&#7868;ÊËÍÌ&#296;ÎÏÓÒÕÔÖÙÚ&#360;Ûüáàãâäéè&#7869;êëíì&#297;îïóòõôöùú&#361;ûü/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/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]