一尘不染

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

linux

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

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

是否有Linux命令可以很好地做到这一点?我对重命名很熟悉,但是看不到任何命令来排序这样的文件名。我在想,既然ls *.jpg按顺序列出文件(有间隔),解决方案是将其输出传递到bash循环或其他东西中?


阅读 801

收藏
2020-06-03

共1个答案

一尘不染

如果我理解正确,则有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
2020-06-03