Чи є спосіб швидко змінити всі розширення файлів усіх файлів у папці?


15

У мене є велика папка аудіокниг .m4b, яка в їх поточному форматі не відтворюватиметься на моєму телефоні Android. Однак вони добре працюють, якщо вони перейменовані на .m4a

Чи є швидкий метод або термінальна команда, яка може перейменувати кожен .m4b файл у папці на .m4a? Не потрібно ніякої конверсії файлів, просто перейменування розширення файлу працює чудово.


2
FYI: renameце сценарій PERL і приймає регулярні вирази. Системи Debian також мають rename.ulкоманду як частина util-linux-ng package. Якщо perl не встановлено (нормально, дуже малоймовірно;)), renameтакож це не так.
Rinzwind

Відповіді:


17

Це зробить роботу за вас.

rename 's/.m4b$/.m4a/' *.m4b

Для тестового запуску ви можете використовувати цю команду:

rename 's/.m4b$/.m4a/' *.m4b -vn

-v означає "багатослівний", і він видасть імена файлів, коли перейменовує їх.

-n зробить тестовий запуск, коли він не перейменовує жодних файлів, але покаже вам список файлів, які будуть перейменовані.


Набагато краща відповідь, ніж моя. Я лінувався і намагався не використовувати регулярні вирази ...
adempewolff

Дякую, працює частування. Завдяки @adempewolff також за зусилля
covernail

10

Дуже швидкий спосіб перейменувати файли, якщо це все, що вам потрібно зробити, і не потрібно їх конвертувати в інший формат, - це використовувати розширення параметрів Bash, які детально описані на вікі Bash .

Існує кілька різних способів зміни розширення, але тут я використовую просту ${var/original/replacement}парадигму:

for file in *.m4b; do mv -- "${file}" "${file/%m4b/m4a}"; done

Якщо ви хочете побачити, що було б змінено командою, поставте echoперед цим mvі зміни будуть вказані.

Потрібно говорити, що цей oneliner може бути змінений і для інших файлів, а також ви можете використовувати розширення параметрів, щоб видалити розширення файлів.


+1 Цей спосіб працює так само, як і відповідь @Basharat Sial, за винятком того, що він також працює, коли у вас буде багато файлів, які відповідають *.m4b. Інакше ви отримаєте помилку argument list too long.
матовий опік

Також, щоб спостерігати, як це відбувається, додайте багатослівний прапор:for file in *.m4b; do mv -v -- "${file}" "${file/%m4b/m4a}"; done
матовий спалює
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.