1
我有一個名爲A_B發現文件名正則表達式
我用下面的正則表達式來找到它的文件,以及他們的工作:
find . -iname "a_b"
find . -iname "a_*b"
但是怎麼來的以下格式沒有找到它?
find . -iname "a_{1}b"
是不是正確的,{1}
意味着前一個字符是"_"
應該完全匹配一次?
我有一個名爲A_B發現文件名正則表達式
我用下面的正則表達式來找到它的文件,以及他們的工作:
find . -iname "a_b"
find . -iname "a_*b"
但是怎麼來的以下格式沒有找到它?
find . -iname "a_{1}b"
是不是正確的,{1}
意味着前一個字符是"_"
應該完全匹配一次?
您使用的是正則表達式,但find
的-iname
和-name
行動預計模式(水珠)。 (鏈接由@Adam提供)只與正則表達式有關,而且更簡單,但也不那麼強大。
(順便說一句:在你的具體的例子,你需要既不 - 只是用字符作爲是會做)
如果你需要一個正則表達式的電源,且find
版本支持,使用-iregex
或-regex
行動(他們是POSIX標準的不部分):
GN üfind
(Linux的):
find . -regextype posix-extended -iregex ".*/a_{1}b"
的FreeBSD/OSX find
:
find -E . -iregex ".*/a_{1}b"
注:
-iregex
和-regex
匹配整個輸入路徑,因此.*/
前綴。 -iname
和-name
比賽只有名一部分。)-E
/-regextype posix-extended
),以確保構建這種支持作爲{1}
或允許它們的使用而不需要\
-逃避{
和}
。
[本頁](http://www.tldp.org/LDP/abs/html/globbingref.html)有更多關於'Globbing'的信息,以及它與正則表達式的區別。 – Adam
哦!至少現在我知道我不應該在發現之前放置正則表達式!但是我輸入了你的建議解決方案,但仍然沒有得到結果。它可能是我的shell缺乏正則表達式嗎? –
@MahshidZeinaly:我不好 - 請看我最新的答案。 (順便說一句:這裏不是_shell_,而是'find'實用程序支持的內容。你在什麼平臺上?) – mklement0