@gth-other

Как написать команду на bash, переименующую все файлы в каталоге в 0.bmp 1.bmp 2.bmp...?

Есть каталог, содержащий большое количество файлов (порядка несколько сотен тысяч) расширения bmp. Надо переименовать все эти файлы следующим образом:
0.bmp
1.bmp
2.bmp
3.bmp
4.bmp
5.bmp
6.bmp
7.bmp
8.bmp
...


Понятное дело, что можно написать какую-то жесть в 100 строк на питоне, но хотелось бы элегантное решение в виде одной bash команды. Скиньте, если у кого есть.
  • Вопрос задан
  • 166 просмотров
Решения вопроса 3
xotkot
@xotkot
хорошо есть и хорошо весьма
eval $(ls |awk '{i++;print "mv "$0" "i".bmp;"}')

для подстраховки, если в именах есть пробелы то предварительно нужно взять их в кавычки ' (\x27)
eval $(ls |awk '{i++;print "mv \x27"$0"\x27 "i".bmp;"}')
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
насчет питония не знаю, но на пхпе это одна строчка,
php -r 'foreach(glob("*.bmp") as $i=>$file) rename($file, "$i.bmp");'
Ответ написан
Комментировать
karabanov
@karabanov Куратор тега Linux
Системный администратор
num=0; for i in *.bmp; do mv "$i" "$(printf '%09d' $num).${i#*.}"; ((num++)); done
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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