linux - 将一组文件重命名为 001、002、

标签 linux bash shell file rename

我最初有一组图像,格式为 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/

相关文章:

linux - 如何仅从 TCPDUMP 文件中提取目标端口

c - 如何在 ELF 文件中查找变量类型?

php - 在 php 中运行带有 "xte command"的 bash 文件

linux - 我怎样才能在centos中获取远程连接系统的cpuinfo?

bash - 检测可执行文件是否在用户的 PATH 中

regex - sed 两次添加替换文本

c - 使用 VS Code、Makefile 和自定义 bash 脚本在 C 语言中调试头文件

linux - 使用一个文件中的部分列作为另一个文件中的搜索词

linux - 在 sudo 脚本中以非 super 用户身份执行命令

linux - 替换文件中的行