我已经很久没有编写任何 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。