Переименуйте файл с помощью regex

У меня есть небольшие проблемы, пытающиеся изменить имя нескольких использований имен файлов суммы, переименовывают команду.

У меня есть 1 основной directoy, и столь многие другие внутри, после этого целое содержание являются .wav файлами.

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

Я хочу изменить 'час' файла;

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

Используя ту же дату как ссылка

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

Я попробовал что-то вроде этого:

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

Вопрос, что, если я хочу изменить имя всех тех файлов во всех тех каталогах? Как это было бы?

0
задан 27 February 2018 в 14:08

1 ответ

Если у нас есть структура каталогов с двумя уровнями и в первом уровне нет файлов:

$ 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)

Когда структура каталогов более сложна, мы можем использовать удар 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
...

Ссылки:

0
ответ дан 30 October 2019 в 09:04

Другие вопросы по тегам:

Похожие вопросы: