我需要列出其爲具有alien.digits 數字可從1隨時隨地許多 所有文件名之下,但它不應該匹配,如果像alien.htm任何其他東西的混合物, alien.1php,alien.1234.pj.123,alien.123.12,alien.12.12p.234htm如何使用正則表達式find命令
我寫道: 找到回家/ jassi/-name 「外星人[0-9] *」。 但不工作,並與其匹配的一切。
任何解決方案?
我需要列出其爲具有alien.digits 數字可從1隨時隨地許多 所有文件名之下,但它不應該匹配,如果像alien.htm任何其他東西的混合物, alien.1php,alien.1234.pj.123,alien.123.12,alien.12.12p.234htm如何使用正則表達式find命令
我寫道: 找到回家/ jassi/-name 「外星人[0-9] *」。 但不工作,並與其匹配的一切。
任何解決方案?
我想你想要的是
find home/jassi/ -regex ".*/alien\.[0-9]+"
隨着-name
選項,您不指定正則表達式但glob模式。
請注意,find期望整個路徑與正則表達式匹配。
的*
修飾符意味着0個或多個先前的匹配,和.
指任何字符,這意味着它匹配alien
。
試試這個:
alien\.[0-9]+$
的+
修飾符意味着1個或多個前面的比賽中,和.
已經逃到文字字符,並在末尾$
表示「字符串的結束」 。
如果您想確保只有與您的正則表達式完全匹配的文件,您還可以將^
添加到正則表達式的開頭。 ^
字符的意思是「字符串的開始」,所以^alien\.[0-9]+$
將匹配alien.1234
,但它不會匹配not_an_alien.1234
。
如果它是Perl,我會說你是對的,但它的Linux機器,它不會工作的確定。我在find命令中找到了一些我們需要使用它的東西。我正在嘗試。 – Jassi
試試這個:find home/jassi/ -name "alien\.[0-9]+$"
它會匹配所有具有alien.
的文件,並以至少一個數字結束,但不是數字。 $
字符表示字符串末尾。
這種正則表達式不起作用,它會拋出錯誤。 錯誤是非法的變量名稱。 你不能使用+或$,*表示一切。 Perl正則表達式在這種情況下不起作用 – Jassi
它的工作對我來說: 找到回家/ jassi/TYPE -f -regex 「* /外星人[0-9] +」。
我不得不提供類型-f檢查,如果它是一個文件否則它會顯示同名的目錄。
謝謝bmk。我剛想通了,同時你的回答也完全一樣。大!
是的真的我做到了,現在它工作正常 我寫道:find/home/jassi -type f -regex「。*/alien。[0-9] *」雖然+也會工作,而不是* :)謝謝bmk – Jassi