我最初有一组图像,格式为image_001.jpg,image_002.jpg,…
我经历了他们,并删除了几个。现在,我想将剩余的文件重命名为image_001.jpg,image_002.jpg,…
是否有Linux命令可以很好地做到这一点?我对重命名很熟悉,但是看不到任何命令来排序这样的文件名。我在想,既然ls *.jpg按顺序列出文件(有间隔),解决方案是将其输出传递到bash循环或其他东西中?
ls *.jpg
如果我理解正确,则有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