隨筆-314  評(píng)論-209  文章-0  trackbacks-0

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

          以下來看看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)中查找文件時(shí),有時(shí)需要忽略某些目錄,可以使用 -prune 參數(shù)來進(jìn)行過濾。
          不過必須注意:要忽略的路徑參數(shù)要緊跟著搜索的路徑之后,否則該參數(shù)無法起作用。

          例如:指定搜索/home/zth目錄下的所有文件,但是會(huì)忽略/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

          要忽略兩個(gè)以上的路徑如何處理?


          復(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

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

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


          復(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命令查找文件時(shí),忽略相關(guān)目錄的方法了。

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

          評(píng)論:
          # 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ù)  更多評(píng)論
            
          主站蜘蛛池模板: 西林县| 敖汉旗| 巴里| 永仁县| 平罗县| 安阳市| 盘山县| 丰镇市| 荆州市| 涿鹿县| 崇明县| 万州区| 托克逊县| 方山县| 宁国市| 永嘉县| 当涂县| 泰州市| 保定市| 兴隆县| 岑巩县| 班戈县| 赤壁市| 淮安市| 革吉县| 津市市| 公主岭市| 长治市| 广宁县| 嘉荫县| 湟源县| 博爱县| 黔南| 商丘市| 读书| 辽宁省| 甘谷县| 甘肃省| 历史| 邢台市| 长治市|