从文件名的开头删除一串数字或文本

时间:2017-12-20 19:34:22

标签: macos rename macos-sierra file-rename batch-rename

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

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

22681256样本PDF获取Money.pdf

24225401印度电影业.pdf

24309156启动并经营自己的咖啡店和午餐吧.pdf

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

24538682 100 Verbal Signals.pdf

24861279 100 Greatest Songs.pdf

24975456约会预订.pdf

25169832如何免费创业.pdf

25283738建立现代公关活动.pdf

26672829最大的股票市场在世界上播放.pdf

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

27012881食物的价值和价格来自Terra Madre的摘录Carlo Petrini.pdf

27114721社交媒体营销服务.pdf

27881968简介3.pdf

28097572电影PDF.pdf

1 个答案:

答案 0 :(得分:0)

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

#!/bin/bash
regex="([0-9]*.)(([a-zA-Z0-9]*|.*)*\.pdf)"
for filename in *.pdf; do
    if [[ $filename =~ $regex ]]
    then
    mv "$filename" "${BASH_REMATCH[2]}"
  fi  
done

<强>解释

可以找到使用的正则表达式的详细分类here。它比我在这篇文章中更清晰地解释了事情。

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