我很難拼湊一個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