我如何重命名所有文件设置 1.jpg、2.jpg 等?

我如何重命名所有文件设置 1.jpg、2.jpg 等?

我已经很久没有编写任何 shell 脚本了。

我在 Ubuntu 上使用 Bash

我有一个文件夹,里面有很多 jpg 图片,这些图片的名称都是由相机随机生成的。我想重命名所有图片,创建类似 1.jpg、2.jpg 之类的文件,并按日期排序。

到目前为止,我已经对图片进行了如下排序 ls -alt ,输出如下内容:

-rwxr-xr-x 1 pc-vell pc-vell 3919618 2013-04-29 13:28 P4295809.JPG
-rwxr-xr-x 1 pc-vell pc-vell 4293911 2013-04-29 14:15 P4295810.JPG
-rwxr-xr-x 1 pc-vell pc-vell 3819811 2013-04-29 14:27 P4295811.JPG
-rw-r--r-- 1 pc-vell pc-vell 4993078 2013-04-29 23:13 DSCF0880.JPG

因此我必须获取P4295809.JPG并将其重命名为1.JPG,然后对下一个进行类似操作。

我把输出删减如下:

DSCF1045.JPG
DSCF1046.JPG
DSCF1048.JPG
DSCF1050.JPG
DSCF1053.JPG
DSCF1054.JPG
DSCF1055.JPG

使用ls -altr | cut -c 55-100

但现在我陷入困境。我不知道如何编写脚本……

你能帮帮我吗?谢谢。

答案1

您不需要解析ls输出,只需循环执行表达式中找到的内容/your/dir/*.JPG

这可以起作用:

i=1
for f in /your/dir/*.JPG
do
  mv "$f" "${i}.jpg"
  i=$((i+1))
done

*.JPG它将循环匹配的文件/your/dir并将其重命名为柜台.jpg。

相关内容