gpt4 book ai didi

Bash按顺序批量重命名文件

转载 作者:行者123 更新时间:2023-11-29 09:25:29 26 4
gpt4 key购买 nike

我在同一目录中有一堆文件,名称如下:

IMG_20160824_132614.jpg

IMG_20160824_132658.jpg

IMG_20160824_132738.jpg

中间部分是日期,最后一部分是照片拍摄时间。因此,如果我按名称对这些文件进行排序,结果将与按修改日期/时间排序相同

我想使用 bash 将这些文件批量重命名为以下形式:

1-x-3.jpg

其中 x 表示文件在顺序中的位置(按名称/修改时间排序)

因此上面的 3 个示例将重命名为:

1-1-3.jpg

1-2-3.jpg

1-3-3.jpg

是否有可以实现此目的的 bash 命令?还是需要脚本?

最佳答案

尝试:

i=1; for f in *.jpg; do mv "$f" "1-$((i++))-3.jpg"; done

例如,使用您的文件名:

$ ls
IMG_20160824_132614.jpg IMG_20160824_132658.jpg IMG_20160824_132738.jpg
$ i=1; for f in *.jpg; do mv "$f" "1-$((i++))-3.jpg"; done
$ ls
1-1-3.jpg 1-2-3.jpg 1-3-3.jpg

注意事项:

  1. 展开*.jpg 时,shell 按字母数字顺序列出文件。这似乎是你想要的。但请注意,字母数字顺序可能取决于语言环境。

  2. 顺序编号是用$((i++))完成的。这里,$((...)) 代表算术展开。 ++ 仅表示将变量递增 1。

关于Bash按顺序批量重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39133172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com