在Linux上将一组文件重命名为001、002 ...

我最初有一组图像,格式为image_001.jpg,image_002.jpg,…

我经历了他们,并删除了几个。现在,我想将剩余的文件重命名为image_001.jpg,image_002.jpg,…

是否有Linux命令可以很好地做到这一点?我对重命名很熟悉,但是看不到任何命令来排序这样的文件名。我在想,既然ls

*.jpg按顺序列出文件(有间隔),解决方案是将其输出传递到bash循环或其他东西中?

回答:

如果我理解正确,则有image_001.jpg,image_003.jpg,image_005.jpg,并且您想重命名为image_001.jpg,image_002.jpg,image_003.jpg。

编辑:这被修改为将临时文件放在当前目录中。正如Stephan202所指出的,如果temp在不同的文件系统上,则这可能会产生很大的不同。为了避免在循环中命中临时文件,它现在通过image

*

i=1; temp=$(mktemp -p .); for file in image*

do

mv "$file" $temp;

mv $temp $(printf "image_%0.3d.jpg" $i)

i=$((i + 1))

done

以上是 在Linux上将一组文件重命名为001、002 ... 的全部内容, 来源链接: utcz.com/qa/428569.html

回到顶部