Как переименовать множество файлов в каталогах и подкаталогах

find . -type d -print0 | while read -d $'\0' dir; do cd "$dir"; echo " process $dir"; find . -maxdepth 1 -name "*.ogg.mp3" -exec rename 's/.ogg.mp3/.mp3/' {} \; ; cd -; done


Эта команда позволяет переименовывать файлы с расширением «.ogg.mp3» во всех подкаталогах. Она выполняет следующие действия:
1. Ищет все подкаталоги, начиная с текущей директории («.») и выводит их в формате null-terminated.
2. Читает каждый найденный подкаталог и выполняет следующие действия:
— Переходит в подкаталог.
— Выводит сообщение о текущем обрабатываемом каталоге.
— Ищет файлы в текущем каталоге (максимальная глубина поиска — 1), имеющие расширение «.ogg.mp3».
— Переименовывает найденные файлы, заменяя расширение «.ogg.mp3» на «.mp3».
— Возвращаетя в предыдущий каталог.
3. Повторяет действия для каждого найденного подкаталога.

Альтернативным подходом может быть использование команды «find» с опцией «-exec» для непосредственного переименования файлов без использования цикла «while».

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *