@ralaton121

Как рекурсивно поменять расширение у файлов в Unix?

Необходимо переименовать гору файлов, лежащих в подкаталогах, вложенных в подкаталоги.
Системы Linux (bash) и FreeBSD (csh).
Расширение ровно одно (и то же). Меняем тоже на ровно одно и то же. Безо всяких дополнительных условий.
Как?
  • Вопрос задан
  • 4091 просмотр
Пригласить эксперта
Ответы на вопрос 4
2ord
@2ord
Пример чтобы переименовать все .bak в файлы .old во вложенных директориях:
find /path/to/dir -type d -exec echo rename 's/\.bak$/.old/' {}/*.bak  \;

Примечание: для отладки команды rename будут выводиться на экран из-за присутствия команды echo.
Отладив, можно убрать echo из команды и тогда переименование файлов выполнится действительно.

Читай руководства:
man find
man rename
Ответ написан
@res2001
Developer, ex-admin
смотри find -exec
Ответ написан
Комментировать
dio4
@dio4
team leader, system engineer, master of sports
#меняет 1.mp3 и тд на 01.mp3 и тд. в каталоге ./renamed если sed слишком сложно... 
#!/bin/bash
#cd ~
mkdir -p renamed
j=1
for i in *.mp3 
do 
	cp $i ./renamed/"0"$j".mp3"
	let j=$j+1
done
Ответ написан
Комментировать
shambler81
@shambler81 Куратор тега Linux
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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