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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Renomear arquivos em cadeia em um diretório


From: oteb_04
Subject: Re: Renomear arquivos em cadeia em um diretório
Date: Wed, 19 Jan 2005 16:00:13 -0000
User-agent: eGroups-EW/0.82

--- Em address@hidden, Fábio Batista
<fabio.david.batista@g...> escreveu
> [fabio@elefante arquivos]$ ls -l
> total 0
> -rw-r--r--  1 fabio suprifattus 0 Jan 19 13:17 112_12345.BMP
> -rw-r--r--  1 fabio suprifattus 0 Jan 19 13:17 115_12345.BMP
> -rw-r--r--  1 fabio suprifattus 0 Jan 19 13:17 122_12345.BMP
> -rw-r--r--  1 fabio suprifattus 0 Jan 19 13:17 123_12345.BMP
> 
> [fabio@elefante arquivos]$ ls | sed -r 's/([0-9]{3}_)(.*)/mv \0 \L\2/'
> mv 112_12345.BMP 12345.bmp
> mv 115_12345.BMP 12345.bmp
> mv 122_12345.BMP 12345.bmp
> mv 123_12345.BMP 12345.bmp
> 
> Depois disso, basta fazer o pipe com o sh, para executar os comandos:
> ls | sed -r 's/([0-9]{3}_)(.*)/mv \0 \L\2/' | sh
> 
 Ia enviar um terceiro email com o script completo, já que mesmo
o segundo, assim com o primeiro, estava na verdade sem dar uma
solução.
 Mas achei essa linha deixando o loop for que fiz um tanto arcaico.

#!/bin/bash 
ls|grep .BMP > teste.sh
ls|grep .BMP|tr -s 'BMP' 'bmp'|sed 's/.*_//g' > teste1.sh

x=1
for i in `cat teste.sh`
do
        X=$(sed -n /$x/p teste1.sh)
        mv $i  $X
        ((x++))
done

Fábio, dá para explicar a linha de comando com mai detalhes?

abraço
Beto




reply via email to

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