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

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

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

1 ответ1

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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .