为了账号安全,请及时绑定邮箱和手机立即绑定

重命名文件夹中的文件为序号

重命名文件夹中的文件为序号

长风秋雁 2019-11-04 15:44:48
我想将目录中的文件重命名为连续数字。基于文件的创建日期。例如sadf.jpgto 0001.jpg,wrjr3.jpgto 0002.jpg等,前导零的数目取决于文件的总数(如果不需要,则不需要额外的零)。
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

尝试使用循环let和printf进行填充:


a=1

for i in *.jpg; do

  new=$(printf "%04d.jpg" "$a") #04 pad to length of 4

  mv -i -- "$i" "$new"

  let a=a+1

done

使用该-i标志可防止自动覆盖现有文件。


查看完整回答
反对 回复 2019-11-04
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

我喜欢gauteh的解决方案,因为它简单易用,但它有一个重要的缺点。当在成千上万个文件上运行时,您可能会收到“参数列表过长”的消息(有关更多信息),其次,脚本会变得非常慢。就我而言,在大约36.000个文件上运行它,脚本移动了大约。每秒一件!我不太确定为什么会这样,但是我从同事那里得到的规则是“ find是你的朋友”。


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以了解操作方法)。


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 778 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信