猿问

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

我想将目录中的文件重命名为连续数字。基于文件的创建日期。

例如sadf.jpgto 0001.jpgwrjr3.jpgto 0002.jpg等,前导零的数目取决于文件的总数(如果不需要,则不需要额外的零)。


长风秋雁
浏览 779回答 3
3回答

紫衣仙女

尝试使用循环let和printf进行填充:a=1for i in *.jpg; do  new=$(printf "%04d.jpg" "$a") #04 pad to length of 4  mv -i -- "$i" "$new"  let a=a+1done使用该-i标志可防止自动覆盖现有文件。

慕工程0101907

我喜欢gauteh的解决方案,因为它简单易用,但它有一个重要的缺点。当在成千上万个文件上运行时,您可能会收到“参数列表过长”的消息(有关更多信息),其次,脚本会变得非常慢。就我而言,在大约36.000个文件上运行它,脚本移动了大约。每秒一件!我不太确定为什么会这样,但是我从同事那里得到的规则是“ find是你的朋友”。find -name '*.jpg' | # find jpegsgawk 'BEGIN{ a=1 }{ printf "mv %s %04d.jpg\n", $0, a++ }' | # build mv commandbash # run that command为了计数项目和构建命令,使用了gawk。注意主要区别。默认情况下find,在当前目录及其子目录中搜索文件,因此请确保在必要时仅在当前目录中进行搜索(man find以了解操作方法)。
随时随地看视频慕课网APP
我要回答