如何按文件夹中文件的升序重命名

时间:2018-11-12 06:26:29

标签: for-loop rename

我有一个名为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循环

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 :(得分:0)

我已经解决了这个问题

#!/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