我很难拼凑一个globbing表达式来匹配macOS上的屏幕截图文件名称模式。bash上macOS屏幕截图的模式匹配
我已经成功地得到以下的正则表达式来完成这项工作:
Screen Shot \d{4}-\d{2}-\d{2} at \d{2}\.\d{2}\.\d{2}(\(\d+\))?\.png
此正则表达式匹配:
Screen Shot 2017-04-04 at 23.11.22.png
Screen Shot 2017-04-04 at 23.38.40 (2).png
Screen Shot 2017-04-04 at 23.38.40 (12).png
Screen Shot 2017-04-04 at 23.38.40 (12342).png
我得到的最接近如下,匹配除了在同一秒拍摄的屏幕截图以外的所有内容,(number)
里面的那些:
Screen\ Shot\ [0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]\ at\ [0-9][0-9].[0-9][0-9].[0-9][0-9].png
我已经开始测试*?\ \([0-9]\).png
和它的作品,但因为一旦我做了,结果是no such file or directory
的想法是创建一个别名,以消除所有的屏幕截图,就像我无法加入两个表达式:
alias clrss="cd ~/Desktop | rm -rf Screen\ Shot*.png"
首先,感谢您的回复! 不幸的是你贴不工作,我得到了最后的命令: '用法:用grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A NUM] [-B NUM] [-C [NUM] xargs的:非法选项 - r [-e pattern] [-f file] [--binary-files = value] [--color = when] 用法:xargs [-Oopt] [-E eofstr] [-I replstr [-R替换]] [-J replstr] [-L number] ...' 我不是一个bash专家,但我注意到像'--regexp'而不是'-P'这样的参数有一些不同,所以我怀疑我们在这里使用不同版本的工具。你能在这方面给我启发吗? – valcanaia
对不起,是的,我有来自Macports的GNU grep 3.0和GNU findutils xargs 4.6.0,而MacOS的默认设置是旧的,更加烦人的版本。我已经更新了使用这些工具的答案。 PS:如果你进入命令行的话,为了安装更新的'bash','grep','findutils','gawk'和'''''''''''''''' gsed'(对于初学者)。 – webb
Thanks @webb我已经能够将它们放在一起,只是改变一些东西:在'grep'中将'-P'改为'-E';在'xargs'中删除了'-r';改进了正则表达式,以考虑其他一些情况,如12h格式和屏幕截图非常快,导致在'(x).png之前的一些额外数字,所以新的正则表达式是'屏幕截图\ d {4} - \ d {2 ((AM | PM))?(((\ d)?\(\ d + \))上的\ d {2} )| \ d)?\。png' – valcanaia