歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

find的-regex與-name的區別

find的-regex與-name的區別   1. 與-name, -iname最大的區別就在於 -regex是把find輸出的整個結果(有別於絕對路徑名)作為要匹配的對象, 而不僅僅是結果的最後一部分   www.2cto.com   舉例     /tmp目錄下有且僅有 aaa, aa, 1, 2 這些文件     find -name "a*"可以找到     aaa和aa     而find /tmp -regex "a*"就不行, 它一個都找不到, 因為找到的每個結果是這樣的     /tmp/aaa     /tmp/aa     -name 是對結果中的"aaa"和"aa"這個部分進行匹配, 而-regex卻是對完整的     "/tmp/aaa"和"/tmp/aa"進行匹配.     所以你要寫作find /tmp -regex ".*a.*" 2. 注意上面的是.*而不是*   www.2cto.com   -name所能解釋的是基於shell中file glob的匹配字符, 包括:     (1)*表示任意長度字符串     (2)?表示任意的單個字符     (3)[set] 表示一個可選字符集合     (4)[^set]或[!set]表示以ASCII為全集對[set] 求補集的一個集合     (5)brace expansion, 即把/tmp/{a,b,c}擴展為三個字串     /tmp/a /tmp/b 和/tmp/c     注意 shell的file globing機制往往不被認為是正則表達式. -regex接受的是"正統"的正則表達式     這個說起來東西多了, 基本上它跟emacs文檔裡講的regex是一樣的, 因為find手冊裡regex的解釋部分實際就是鏈接到emacs 中講解regex的那個部分. 在上面例子中最大區別就是.* 來表示任意長度字符串.
 
Copyright © Linux教程網 All Rights Reserved