我想将目录中的文件重命名为顺序数字。根据文件的创建日期。
例如,sadf.jpg到0001.jpg, wrjr3.jpg到0002.jpg等等,前导零的数量取决于文件的总数(如果不需要,不需要额外的零)。
我想将目录中的文件重命名为顺序数字。根据文件的创建日期。
例如,sadf.jpg到0001.jpg, wrjr3.jpg到0002.jpg等等,前导零的数量取决于文件的总数(如果不需要,不需要额外的零)。
当前回答
现在有一个选项后,你选择多个文件重命名(我已经看到在thunar文件管理器)。
选择多个文件 检查选项 选择重命名
在该特定目录下的所有文件都会出现提示符 只要在分类部分检查一下就可以了
其他回答
ls -1tr | rename -vn 's/.*/our $i;if(!$i){$i=1;} sprintf("%04d.jpg", $i++)/e'
重命名-vn -删除n为关闭测试模式
{$i=1;} -控制起始编号
"%04d.jpg" -控制计数零04并设置输出扩展名。jpg
与创建日期无关,但根据已排序的名称编号:
python3 -c \
'ext="jpg"
start_num=0
pad=4
import os,glob
files=glob.glob(f"*.{ext}")
files.sort()
renames=list(zip(files,range(start_num,len(files)+start_num)))
for r in renames:
oname=r[0]
nname=f"{r[1]:0{pad}}.{ext}"
print(oname,"->",nname)
os.rename(oname,nname)
'
下面是另一个使用"rename"命令的解决方案:
find -name 'access.log.*.gz' | sort -Vr | rename 's/(\d+)/$1+1/ge'
我喜欢gauteh的解决方案,因为它简单,但它有一个重要的缺点。当在数千个文件上运行时,您可能会得到“参数列表太长”的消息(更多关于此的信息),其次,脚本可能会变得非常慢。在我的例子中,在大约36.000个文件上运行它,脚本移动了大约。每秒一件!我不太确定为什么会发生这种情况,但我从同事那里得到的规则是“找到的才是朋友”。
find -name '*.jpg' | # find jpegs
gawk 'BEGIN{ a=1 }{ printf "mv %s %04d.jpg\n", $0, a++ }' | # build mv command
bash # run that command
为了计算项目和构建命令,使用了gawk。不过,请注意主要的区别。默认情况下,find搜索当前目录及其子目录中的文件,因此,如果需要,请确保仅限制在当前目录上搜索(使用man find查看如何执行)。
a=1
for i in *.jpg; do
mv -- "$i" "$a.jpg"
a=`expr $a + 1`
done