Как переименовать файлы в монотонно увеличивающиеся порядковые номера с последующим суффиксом?

Я хочу переименовать все файлы в определенном каталоге в число, за которым следует суффикс. Например, я хочу переименовать все файлы *.jpg в 1.jpg, 2.jpg, 3.jpg, ...

Я думал об использовании find для этого (что-то вроде find ./*.jpg --exec mv {} <number_of_iteration>.jpg) но я не знаю, что я бы положил в <number_of_iteration>,

Могу ли я использовать find сделать это? Или есть лучший способ?

1 ответ

Решение

Вам нужно будет поддерживать итерацию отдельно. Например, используйте скрипт move_count содержащий следующее:-

[ -w ~/MoveCount ] || echo 0 >~/MoveCount
read count <~/MoveCount
((++count))
echo $count >~/MoveCount
mv "$1" "$count.${1##*.}"

Тогда ваш find команда станет:

find -iname "*.jpg" -exec bash -c "move_count {}" \;

Обратите внимание, что bash вызывается явно, потому что по умолчанию sh не понимает синтаксис, который я использовал Или сделать #!/bin/bash первая строка move_count,

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