我正在尝试批量重命名 PDF 文件,以从右到左删除所有字符,直到在 Mac 操作系统上达到数字字符。
例如:
10002ASmith.pdf > 10002.pdf
1023A琼斯.pdf > 1023.pdf
文件开头的数字长度是可变的,因此我认为最好让正则表达式从右到左重命名,直到达到数字为止。
我知道 Mac Yosemite 具有批量重命名功能,但没有看到正则表达式重命名选项。在终端中执行此操作是否容易?如果可以,如何执行?或者是否有一个免费程序可以用来使用正则表达式?
我想我只需要知道实际的正则表达式是什么,因为我在正则表达式方面还没有经验。
提前感谢您的帮助!
乔恩
我建议在 shell 中使用find和sed来完成此操作,但采用 @anubhava 提议的更简单的方式。但是,请注意,当文件中包含空格时,它将不起作用。处理空白的版本会稍微复杂一些。
find . -maxdepth 1 -name \'*.pdf\' | while read filename; do newfilename=`echo $filename | sed \'/[0-9]/s/[^0-9]*\\.pdf/.pdf/\'`; echo mv $filename $newfilename; done\nRun Code Online (Sandbox Code Playgroud)\n\n解释:
\n\nfind . -maxdepth 1 -name \'*.pdf\'\xe2\x80\x94 打印全部.pdf当前目录下的所有文件;while read filename; do+ done\xe2\x80\x94 循环,将对find结果中的每一行进行操作(行保存在filename变量中);/[0-9]/s/[^0-9]*\\.pdf/.pdf/\xe2\x80\x94 这是“业务”部分。它由正则表达式地址/[0-9]/(这意味着“仅对包含数字的文件名应用以下命令”)和s命令组成;s本身 , 的s/[^0-9]*\\.pdf$/.pdf/意思是“找到尽可能多的非数字字符,后跟.pdf和 名称末尾,并将其更改为.pdf”;newfilename内容。管道会将建议的命令回显到终端。如果您对结果感到满意,您可以通过将输出通过管道传输到 shell 命令来重新运行它,例如
\n\nfind . -maxdepth 1 -name \'*.pdf\' | while read filename; do newfilename=`echo $filename | sed \'/[0-9]/s/[^0-9]*\\.pdf/.pdf/\'`; echo mv $filename $newfilename; done | bash\nRun Code Online (Sandbox Code Playgroud)\n\n如果你使用bash.
| 归档时间: |
|
| 查看次数: |
5680 次 |
| 最近记录: |