Как переименовать в порядке возрастания файлов в папке - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть папка с именем FOLDER, а внутри у меня есть файлы с именем

file.2.fna
file.5.fna
file.6.fna
file.8.fna
file.12.fna

Я хочу переименовать числовую часть каждого файла в порядке возрастания, начиная с 0. Желаемый вывод

file.0.fna
file.1.fna
file.2.fna
file.3.fna
file.4.fna

Я могу сделать это вручную

mv FOLDER/file.2.fna FOLDER/file.0.fna
rm FOLDER/file.2.fna

Но это не кажется подходящим, поскольку у меня есть несколько десятков файлов Есть ли цикл для выполнения этой работы?

цикл for, который я пробовал,

for file in FOLDER/file.*.fna; do n=0; mv file FOLDER/file.${file}.fna      
FOLDER/file.$n.fna; n=$n+1 ; done

В результате получается только один файл с индексом 0. Я не уверен, как увеличить n на 1 здесь.

Спасибо

1 Ответ

0 голосов
/ 12 ноября 2018

Я справился с этим

#!/bin/bash

a=0
echo $a
for i in file_*; do
new=$(printf "file_%d" "$a")
echo $new
mv -i -- "$i" "$new"
let a=a+1
done
...