我最初有一组图像,格式为 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、,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/880467/