1
我想創建腳本,使用找到這樣的正則表達式查找parametr:與可變
find . -regex $1 | while read prom; do
echo $prom
done
我想從選項的正則表達式,但我不能得到這個工作。我嘗試使用一些正則表達式(即「。*(txt)§」)直接而不是1美元,但它沒有幫助。我忘記使用find?
我想創建腳本,使用找到這樣的正則表達式查找parametr:與可變
find . -regex $1 | while read prom; do
echo $prom
done
我想從選項的正則表達式,但我不能得到這個工作。我嘗試使用一些正則表達式(即「。*(txt)§」)直接而不是1美元,但它沒有幫助。我忘記使用find?
是否有任何理由你有括號?嘗試.*txt$
作爲你的正則表達式(不是那個有趣的「部分符號」在你的問題中籤名)。
如果你確實想要的括號(如捕獲括號?)你必須做.*\(txt\)$
,因爲find
默認的正則表達式類型是Emacs風格,其中()
是文字,並已被逃脫被解釋他們的正則表達式意義。
你也可以做find . -regextype posix-extended -regex '.*(txt)$'
,注意到-regextype posix-extended
這改變了正則表達式來擴展POSIX正則表達式,其中()
是特殊字符(find -regextype asdf
通常會給你一個錯誤信息,列出所有選項,你可以喂在regextype
)。
而且,在你的bash腳本,你應該加上引號就在$1
:
find . -regex "$1"
(除非$1
已經與周圍的引號中,供給在這種情況下無視的建議)。
我的例子應該看起來像'。* \(txt \)$',但我不知道在文本中我必須使用\\(並且那個符號存在應對問題)。你的回答幫助我加引號。謝謝 – 2012-03-14 06:59:56
「(除非$ 1已經被引用了引號,在這種情況下忽略了這個建議)」 - 不,引用到腳本/函數時引用的內容無關緊要:當你「解除引用」變量使用引號。 – 2012-03-14 11:10:03