bash - 如何减少目录中每个文件名中的数字?

标签 bash sed

在我的终端上运行“ls -lrt”我得到一个看起来像这样的大列表:

-rw-r--r--  1 pratik  staff   1849089 Jun 23 12:24 cam13-vid.webm
-rw-r--r--  1 pratik  staff   1850653 Jun 23 12:24 cam12-vid.webm
-rw-r--r--  1 pratik  staff   1839110 Jun 23 12:24 cam11-vid.webm
-rw-r--r--  1 pratik  staff   1848520 Jun 23 12:24 cam10-vid.webm
-rw-r--r--  1 pratik  staff   1839122 Jun 23 12:24 cam1-vid.webm

上面我只展示了一部分作为示例。

我想重命名所有文件,使其编号比当前文件小一。

例如,

mv cam1-vid.webm cam0-vid.webm
mv cam2-vid.webm cam1-vid.webm
.....
....
mv cam 200-vid.webm cam199-vid.webm

如何使用 os x/linux bash 脚本(可能使用 sed)来完成?

最佳答案

你可以用普通的 bash 来做到这一点:

for i in {1..200}
do
    mv "cam${i}-vid.webm" "cam$((i-1))-vid.webm"
done

关于bash - 如何减少目录中每个文件名中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17819954/

相关文章:

linux - 遍历目录和子目录以列出文件的脚本

bash - 为什么我的(centos)docker容器无法运行/etc/bashrc?

linux - SED 错误 - `s' 命令的 RHS 提取 XML 文本时引用\1 无效

linux - Bash 命令行参数通过 ssh 传递给 sed

macos - MacOS 上的 sed "undefined label"

regex - 在 linux 中为每个正则表达式匹配添加下划线

linux - sed:如何删除与包含正斜杠的模式匹配的行?

linux - 在 Linux 中获取给定日期的前一个工作日的函数

string - 对于每个文件 : Walk line by line and grep for string (incorrect output)

linux - 为什么 sed 将此替换的结果评估为 8?