linux find 命令中 如何使用正則表達式,爲什麼經常找不到想要的文件名

linux find 命令中 如何使用正則表達式,爲什麼經常找不到想要的文件名


1. 本文說明的find 版本是 find (GNU findutils) 4.4.2


2. find中使用正則表達式的語法是 find dir -regextype "type" -regex "pattern"

其中

dir:查找文件的起始目錄

type: 如果不使用選項 -regextype "type", 則默認的正則表達式類型是emacs(我沒用過)。使用該選項的話,type 類型包括 posix-awk, posix-basic, posix-egrep 和 posix-extended 四種。我常用的是後兩種。記得php也是常用後兩種。

pattern: find 中要想使用正規正則表達式,需要用選項 -regex "pattern". (這和常用的grep似乎不一樣)。 而pattern就用相應類型風格的正則表達式替換即可。注意 find 的常用選項 -name 是不支持正則表達式的,充其量只能說 -name 選項支持通配符 * ? [] 。


3. find 正則表達式匹配的是什麼

這是經常出問題的地方。至少我該剛接觸find 的時候就屢犯這個錯誤。注意:find 正則表達式是匹配全路徑(包含文件名和相對路徑),它不是搜索。也就是說所寫的正則必須能夠匹配整個搜索目錄路徑和文件名的組合,而不是單單匹配文件名本身。比如說:查找當前目錄下的 fubar3 文件。 它的全路徑(相對路徑)是 ./fubar3 , 注意前面有 ./ 而不只是文件名。所以正則可以寫成  `.*bar.'  或者 `.*b.*3' 等等,但是不能寫成  `f.*r3' (這裏就不能匹配前面的目錄部分)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章