【Shell】给某一目录下所有文件重命名,五位数字,0补全。

时间:2023-01-23 19:31:58

刚接触shell时间太短,复杂的脚本写不出来。只能用一些简单的凑合一下,能实现我想要的功能就好。慢慢学!

这个脚本的功能大概是这样的,先进入一个目录,在该目录下还有很多子目录,再依次进入每个子目录,将子目录中的所有jpg图片重命名,格式为五位数字,0补全。因为我实在没在网上找到直接输出五位数字的方法,所以就只好定义了一个7位数字num, 结束重命名后将开头的100换成0(我子目录下文件数量只有几千),这个可以各种举一反三的。

#!/bin/sh

cd train/ # !!必须有这样一个目录,这个目录下面不能有除了图片和包含图片目录的其他文件。否则后果自负!
num=1000000
new=0
for dir_name in $(ls) #搜索子目录
do
l=1
cd $dir_name/ #进入子目录
for img in $(ls)
do
let new=num+l
rename "s/$img/$new.jpg/" *
let l=l+1
done;
rename 's/^100/0/' *.jpg
cd ../
done;


如果大家有好的方法希望能评论分享一下。感谢感谢!