[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Re: Script Loop
From: |
Gustavo Chaves |
Subject: |
Re: [shell-script] Re: Script Loop |
Date: |
01 Mar 2005 22:55:22 -0300 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 |
>>>>> On Tue, 01 Mar 2005 19:26:29 -0000, "Leonardo Vieira" <address@hidden>
>>>>> said:
> Isso gustavo, todos os arquivos de origem são os que terminam em
> .txt.
> e quero a cada vez que entrar no la~ço renomear um dos arquivos do
> diretório , por exemplo, arq1.txt para arq.txt, e no passo
> seguinte, arq2.txt para arq.txt.
Hmmm... se você exemplificar com um caso real talvez dê pra inferir a
regra geral.
Se só o que você quer é mover todos os arquivos *.txt para um único
nome (sobrepondo-os todos) pra processá-los, então seria algo assim:
for i in *.txt; do
mv $i arq.txt
: ...
done
Se o propósito é remover parte do nome original (e.g., tirando os
números antes do ".txt"), então seria algo assim:
for i in *.txt; do
prefix=`echo $i | sed 's/[0-9]*\.txt$//'`
mv $i ${prefix}.txt
: ...
done
Hmm.. estas chamadas ao sed dentro do loop podem ser caras, dependendo
do número de arquivos que você vai processar. Dá pra fazer um único
sed processar todos os arquivos de uma vez antes do loop assim:
ls | sed -n '/\.txt$/s/[0-9]*\.txt$//;p' | while read prefix; do
mv $i ${prefix}.txt
: ...
done
Se a regra for outra você provavelmente vai poder usar uma técnica
parecida com esta última, i.e., usando o sed pra gerar o resultado.
(BTW, note que nos exemplos acima eu estou supondo que você esteja no
diretório que contém os arquivos pra que eu não tenha que me preocupar
em retirar os nomes dos diretórios dos arquivos. Se você não estiver
lá, faça um 'cd' antes e outro depois. Melhor ainda, use um 'pushd'
antes e um 'popd' depois se estiver usando uma shell que os suporte.
Em último caso, se o resto do interior do loop precisar estar em outro
contexto, use o comando 'basename' pra eliminar o diretório dos nomes
dos arquivos.)
Boa sorte!
Gustavo.
copiar arquivos cujo nome possui espaço, edersom_cei, 2005/03/01