Renomeia o arquivo usando regex

0

Tenho pequenos problemas ao tentar alterar o nome de vários nomes de arquivo de valores usando o comando renomear .

Eu tenho 1 directoy principal, e muitos outros dentro, depois disso, todo o conteúdo é arquivos .wav .

/rec/101/101-27022018-01:00:09-M00.wav

Eu quero mudar a 'hora' do arquivo;

101-27022018-01:00:09-M00.wav

Usando a mesma data como referência

101-27022018-01:00:09-M00.wav

Eu tentei algo assim:

rename 's/27022018-01/27022018-08/' *.wav -v -n

A pergunta é: e se eu quiser mudar o nome de todos esses arquivos dentro de todos os diretórios? Como seria?

    
por Isaí Madueño 27.02.2018 / 22:08

1 resposta

0

Se tivermos uma estrutura de diretórios com dois níveis e não houver arquivos no primeiro nível:

$ tree /tmp/rec
/tmp/rec
├── 101
│   ├── 101-27022018-01:00:09-M00.wav
│   └── 101-27022018-01:00:09-M01.wav
├── 102
│   ├── 101-27022018-01:00:09-M00.wav
│   └── 101-27022018-01:00:09-M01.wav
└── 103
    ├── 101-27022018-01:00:09-M00.wav
    └── 101-27022018-01:00:09-M01.wav

$ rename -n 's/27022018-01/27022018-08/' /tmp/rec/*/*.wav

rename(/tmp/rec/101/101-27022018-01:00:09-M00.wav, /tmp/rec/101/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/101/101-27022018-01:00:09-M01.wav, /tmp/rec/101/101-27022018-08:00:09-M01.wav)
rename(/tmp/rec/102/101-27022018-01:00:09-M00.wav, /tmp/rec/102/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/102/101-27022018-01:00:09-M01.wav, /tmp/rec/102/101-27022018-08:00:09-M01.wav)
rename(/tmp/rec/103/101-27022018-01:00:09-M00.wav, /tmp/rec/103/101-27022018-08:00:09-M00.wav)
rename(/tmp/rec/103/101-27022018-01:00:09-M01.wav, /tmp/rec/103/101-27022018-08:00:09-M01.wav)

Quando a estrutura de diretórios é mais complexa, podemos usar a opção bash globstar :

$ tree /tmp/rec
/tmp/rec
├── 101
│   ├── 00
│   │   └── 101-27022018-01:00:09-M00.wav
│   ├── 01
│   │   └── 101-27022018-01:00:09-M00.wav
│   ├── 101-27022018-01:00:09-M00.wav
│   └── 101-27022018-01:00:09-M01.wav
├── 102
│   ├── 00
│   │   └── 101-27022018-01:00:09-M00.wav
│   ├── 01
│   │   └── 101-27022018-01:00:09-M00.wav
│   ├── 101-27022018-01:00:09-M00.wav
│   └── 101-27022018-01:00:09-M01.wav
└── 103
    ├── 00
    │   └── 101-27022018-01:00:09-M00.wav
    ├── 01
    │   └── 101-27022018-01:00:09-M00.wav
    ├── 101-27022018-01:00:09-M00.wav
    └── 101-27022018-01:00:09-M01.wav

9 directories, 12 files

$ shopt -s globstar
$ rename -v 's/27022018-01/27022018-08/' /tmp/rec/**/*.wav

/tmp/rec/101/00/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/00/101-27022018-08:00:09-M00.wav
/tmp/rec/101/01/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/01/101-27022018-08:00:09-M00.wav
/tmp/rec/101/101-27022018-01:00:09-M00.wav renamed as /tmp/rec/101/101-27022018-08:00:09-M00.wav
/tmp/rec/101/101-27022018-01:00:09-M01.wav renamed as /tmp/rec/101/101-27022018-08:00:09-M01.wav
...

Referências:

por pa4080 28.02.2018 / 00:35