将目录中的所有文件重命名为basename-sequentialnumber.extension

问题描述 投票:0回答:1

我有一个目录,其中包含.jpg文件,当前名为photo-1.jpgphoto-2.jpg等。这些文件大约有20,000,顺序编号。

有时我删除其中一些文件,这在文件命名约定中造成了空白。

你们能用bash脚本帮助我,该脚本将顺序重命名目录中的所有文件以消除空白吗?我找到了许多有关重命名文件的文章,并尝试了很多方法,但不能完全得到我想要的东西。

例如:

photo-1.jpg
photo-2.jpg
photo-3.jpg

删除照片2.jpg

photo-1.jpg
photo-3.jpg

运行脚本以按顺序重命名所有文件

photo-1.jpg
photo-2.jpg

完成

bash file-rename batch-rename
1个回答
0
投票

在文件夹中运行此脚本将重命名:

i=1
for FILE in *.jpg
    do 
        mv $FILE $(echo $FILE | awk -F "-" '{print $1}')-$i.jpg
        (( ++i ))
done

我首先遍历每个.jpg文件。

然后我重命名每个文件。我将awk与自定义拆分器-F "-"一起使用。然后,我打印第一个字符串并将其捕获在$()中,以便将其用作新文件名,该文件名将是没有前一位数字的文件名。然后我合并-$i,其中$i是当前索引。在此之后,我增加$ i以便转到下一个索引。为了使所有文件按顺序排列。

© www.soinside.com 2019 - 2024. All rights reserved.