隨筆-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)容,以下語句可以解決目錄帶空格的問題:


          復(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 閱讀(1387) 評(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)論
            
          主站蜘蛛池模板: 临汾市| 保靖县| 阆中市| 准格尔旗| 铅山县| 云阳县| 石泉县| 栾城县| 乐平市| 丽江市| 明水县| 杭锦后旗| 上栗县| 镇赉县| 万载县| 娄烦县| 视频| 基隆市| 隆昌县| 大余县| 西吉县| 富宁县| 广宁县| 原平市| 揭西县| 长春市| 望谟县| 大城县| 东源县| 特克斯县| 治多县| 砀山县| 随州市| 石家庄市| 韶山市| 天峨县| 贞丰县| 天柱县| 台江县| 北海市| 鹤壁市|