隨筆-314  評論-209  文章-0  trackbacks-0

          在linux操作系統(tǒng)中,find命令非常強大,在文件與目錄的查找方面可謂無所不至其極,如果能結(jié)合xargs命令使得,更是強大無比。

          以下來看看find命令忽略目錄查找的用法吧。

          例1,根據(jù)文件屬性查找:


          復(fù)制代碼
          代碼如下:

          find . -type f -name "*config*" ! -path "./tmp/*" ! -path "./scripts/*" ! -path "./node_modules/*" 
          Explanation:
          find . - Start find from current working directory (recursively by default) 
          -type f - Specify to find that you only want files in the results 
          -name "*_peaks.bed" - Look for files with the name ending in _peaks.bed 
          ! -path "./tmp/*" - Exclude all results whose path starts with ./tmp/ 
          ! -path "./scripts/*" - Also exclude all results whose path starts with ./scripts/

          例2,根據(jù)文件內(nèi)容查找:


          復(fù)制代碼
          代碼如下:

          grep -n -r --exclude-dir='node_modules' --exclude-dir='logs' --exclude="nohup.out" 192 *




          使用find命令在linux系統(tǒng)中查找文件時,有時需要忽略某些目錄,可以使用 -prune 參數(shù)來進行過濾。
          不過必須注意:要忽略的路徑參數(shù)要緊跟著搜索的路徑之后,否則該參數(shù)無法起作用。

          例如:指定搜索/home/zth目錄下的所有文件,但是會忽略/home/zth/astetc的路徑:


          復(fù)制代碼
          代碼如下:

          find /home/zth -path "/home/zth/astetc" -prune -o -type f -print

          按照文件名來搜索則為:


          復(fù)制代碼
          代碼如下:

          find /home/zth -path "/home/zth/astetc" -prune -o -type f -name "cdr_*.conf" -print

          要忽略兩個以上的路徑如何處理?


          復(fù)制代碼
          代碼如下:

          find /home/zth /( -path "/home/zth/astetc" -o -path "/home/zth/etc" /) -prune -o -type f -print
          find /home/zth /( -path "/home/zth/astetc" -o -path "/home/zth/etc" /) -prune -o -type f -name "cdr_*.conf" -print

          注意:/( 和/) 前后都有空格。

          查找某個文件包含內(nèi)容,以下語句可以解決目錄帶空格的問題:


          復(fù)制代碼
          代碼如下:

          find ./ -name "mysql*" -print0 |xargs -0 grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

          如果目錄不帶空格,可以這樣:
           

          復(fù)制代碼
          代碼如下:

          find ./ -name "mysql*" |xargs grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

          通過以上的例子,大家應(yīng)該可以掌握find命令查找文件時,忽略相關(guān)目錄的方法了。

          posted on 2015-10-28 11:33 xzc 閱讀(1382) 評論(1)  編輯  收藏 所屬分類: linux/unix

          評論:
          # re: linux find命令忽略目錄的查找方法 2015-10-28 11:35 | xzc
          $ find /home/gxeda/data -type f
          /home/gxeda/data/p_cdr_table_type=5/.hive-staging_hive_2015-10-27_15-12-31_755_7195444337062300569-7182/_tmp.-ext-10000/000000_0
          /home/gxeda/data/p_cdr_table_type=5/.hive-staging_hive_2015-10-27_15-12-31_755_7195444337062300569-7182/-ext-10001/tmpstats-0
          /home/gxeda/data/p_cdr_table_type=5/000000_0
          /home/gxeda/data/p_cdr_table_type=12/000000_0
          /home/gxeda/data/p_cdr_table_type=3/000000_0
          /home/gxeda/data/p_cdr_table_type=10/000000_0
          $ find /home/gxeda/data -type f ! -path "*/.*"
          /home/gxeda/data/p_cdr_table_type=5/000000_0
          /home/gxeda/data/p_cdr_table_type=12/000000_0
          /home/gxeda/data/p_cdr_table_type=3/000000_0
          /home/gxeda/data/p_cdr_table_type=10/000000_0  回復(fù)  更多評論
            
          主站蜘蛛池模板: 会昌县| 炉霍县| 扎鲁特旗| 克拉玛依市| 宁河县| 咸丰县| 固原市| 灵石县| 自治县| 兴海县| 即墨市| 镇坪县| 葫芦岛市| 济宁市| 界首市| 江山市| 宜春市| 乌拉特中旗| 邛崃市| 开封市| 土默特左旗| 凭祥市| 海宁市| 平利县| 全州县| 安泽县| 吉木乃县| 青河县| 兴宁市| 平泉县| 饶平县| 唐山市| 济阳县| 自贡市| 禄劝| 响水县| 汕头市| 赤水市| 墨竹工卡县| 壶关县| 怀仁县|