Macos 删除文件名开头的数字或文本字符串

Macos 删除文件名开头的数字或文本字符串,macos,rename,macos-sierra,file-rename,batch-rename,Macos,Rename,Macos Sierra,File Rename,Batch Rename,在MacOS Sierra(MacBook Pro)上,如何将.pdf文件名开头的随机数字字符串作为一个批删除,以便按字母顺序查看?例如,这是这些文件如何在Finder中显示的示例,其数字会影响字母顺序: 22169203 Gregory Zuckerman有史以来最伟大的交易摘录.pdf 22681256示例PDF获取资金.PDF 24225401印度电影业.pdf 24309156开办自己的咖啡店和午餐吧。pdf 24375874古典音乐培训的5个步骤Riyaz.pdf 24538682 1

在MacOS Sierra(MacBook Pro)上,如何将.pdf文件名开头的随机数字字符串作为一个批删除,以便按字母顺序查看?例如,这是这些文件如何在Finder中显示的示例,其数字会影响字母顺序:

22169203 Gregory Zuckerman有史以来最伟大的交易摘录.pdf

22681256示例PDF获取资金.PDF

24225401印度电影业.pdf

24309156开办自己的咖啡店和午餐吧。pdf

24375874古典音乐培训的5个步骤Riyaz.pdf

24538682 100口头信号.pdf

24861279 100首最伟大的歌曲.pdf

24975456预约簿预览版.pdf

25169832如何免费创业。pdf

25283738建筑现代公关活动.pdf

26672829全球最大的股票市场。pdf

26852793免费电子书《股票初学者秘密实用指南》,Nnadi Jane.pdf

27012881食物的价值和价格卡洛·佩特里尼摘自《大地》的一段话

27114721社交媒体营销服务.pdf

27881968导言3.pdf


28097572 Film PDF.PDF

这个小shell脚本将使用顶部定义的正则表达式重命名文件,删除名称前面的数字。请注意,此脚本应在与PDF相同的目录中运行,否则需要更改for循环中的目录

#/bin/bash
regex=“([0-9]*)([a-zA-Z0-9]*.*
文件名为*.pdf;做
如果[[$filename=~$regex]]
然后
mv“$filename”“${BASH_重新匹配[2]}”
fi
完成
解释

可以找到所用正则表达式的详细分类。它比我在这篇文章中解释得更清楚


mv
命令将第一个参数(在本例中为具有原始名称的PDF)移动到最后一个参数中指定的目标(在本例中为正则表达式的第二个捕获组)
BASH_REMATCH
是存储正则表达式操作结果的数组。在本例中,我们使用了第二个索引,它存储文件名减去前缀数字。更详细地解释bash正则表达式。

谢谢你,杰拉德。我刚刚测试了这个,但是文件名没有改变:数字仍然在文件名的开头。我已将.pdfs移动到与默认终端目录相同的目录中。您提供的脚本中是否有需要更改的变量?@nat,很抱歉。我使用windows10的bashshell测试了原始脚本,脚本运行正常。然而,在使用Git-Bash进行测试之后,我意识到Git-Bash(以及随后的普通linux/mac-Bash)中的正则表达式支持较少的特殊操作符。我用一个新的正则表达式更新了答案,该正则表达式在git bash和windows bash中都能工作。无需道歉-很高兴能与您一起完成解决方案。我在终端中收到以下错误:wiilds MBP:~wiild$/Users/wiild/RemoveNumbersPDF;退出/Users/wiild/RemoveNumbersPDF:第4行::未找到命令/Users/wiild/RemoveNumbersPDF:第5行::未找到命令/Users/wiild/RemoveNumbersPDF:第6行::未找到命令/Users/wiild/RemoveNumbersPDF:第7行::未找到命令注销保存会话。。。复制共享历史。。。正在保存历史记录…正在截断历史记录文件。。。已完成。我已尝试使用您修订的脚本执行此操作,并将第二行修改为“for filename in./*.pdf;do”,以防出现问题,但没有效果。Gerard-我们得到了一个结果,成功!非常感谢。问题出现在最后一行“fi”中,我相信它应该是带有空格的“fi”——不管怎样,最终解决了问题。我不知道如何编辑上面的脚本来做到这一点,所以请随意做的荣誉!由于我对此完全是新手,您能否简要解释一下正则表达式在这段代码中是如何工作的,即,即使文件名包含数字,例如587487587 48 Laws of Power.pdf,代码如何知道只删除数字字符串,而不管文件名前的长度如何?再次感谢你所做的一切。纳特