Попробуйте сделать следующее:
count=0; for f in *; do [ -f "$f" ] && mv -i "$f" "cin_$((++count)).${f##*.}"; done
Или, если вы предпочитаете, чтобы ваши команды распределялись по нескольким строкам:
count=0
for f in *
do
[ -f "$f" ] && mv -i "$f" "cin_$((++count)).${f##*.}"
done
Как это работает
count=0
Этот вывод инициализирует переменную count в ноль.
for f in *; do
Это будет запускать цикл по всем файлам в текущем каталоге.
[ -f "$f" ] && mv -i "$f" "cin_$((++count)).${f##*.}"
[ -f "$f" ]
проверяет, является ли файл $ f обычным файлом (не каталогом).
Если $f это обычный файл, то выполняется команда move ( mv). -i говорит mv не перезаписывать существующие файлы без запроса.
"cin_$((++count)).${f##*.}"
это имя нового файла.
cin_
это префикс.
$((++count))
возвращает значение count после того, как оно было увеличено.
${f##*.}
это расширение файла $f.
done
Отмечает конец цикла.
Например
Имеется каталог с этими тремя файлами:
$ ls
alpha.jpg beta.png gamma.txt
Запустим эту команду:
$ count=0; for f in *; do [ -f "$f" ] && mv -i "$f" "cin_$((++count)).${f##*.}"; done
После ее запуска файлы в каталоге теперь:
$ ls
cin_1.jpg cin_2.png cin_3.txt