Как переименовать файлы в монотонно увеличивающиеся порядковые номера с последующим суффиксом?
Я хочу переименовать все файлы в определенном каталоге в число, за которым следует суффикс. Например, я хочу переименовать все файлы *.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
,