日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

find 的-regex 与 -name的区别

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 find 的-regex 与 -name的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 與-name, -iname最大的區別就在于 -regex是把find輸出的整個結果(有別于絕對路徑名)作為要匹配的對象, 而不僅僅是結果的最后一部分

舉例:

/tmp目錄下有且僅有?aaa,?aa,?1,?2?這些文件?find?-name?"a*"??可以找到aaa和aafind?/tmp?-regex?"a*"就不行,?它一個都找不到,?因為找到的每個結果是這樣的 /tmp/aaa /tmp/aa-name?是對結果中的"aaa"和"aa"這個部分進行匹配,? 而-regex卻是對完整的?"/tmp/aaa"和"/tmp/aa"進行匹配. 所以你要寫作find?/tmp?-regex?".*a.*"

2. 注意上面的是.*而不是*


-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的那個部分.?

在上面例子中最大區別就是.* 來表示任意長度字符串.


舉例:

刪除/tmp目錄中所有數字命名的文件夾

find?/tmp?-type?d?-regex?".*/[0-9]*"?-exec?rm?-rf?{}?\;


本文轉自:

https://my.oschina.net/taomac/blog/100248

find用法鏈接:

http://www.oschina.net/translate/15-practical-unix-linux-find-command-examples-part-2

http://www.oschina.net/translate/15-practical-linux-find-command-examples


轉載于:https://blog.51cto.com/qiangsh/1955116

總結

以上是生活随笔為你收集整理的find 的-regex 与 -name的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。