linux find 命令忽略某個或多個子目錄的方法

Linux find 進行查找的時候,有時候須要忽略某些目錄不查找,能夠使用 -prune 參數來進行過濾,但必需要注意要忽略的路徑參數必須緊跟着搜索的路徑以後,不然該參數沒法起做用。html

如下是指定搜索/home/carryf目錄下的全部文件,可是會忽略/home/carryf/astetc的路徑:mysql

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

 

若是按照文件名來搜索則爲:linux

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

 

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

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

注意\( 和\) 先後都有空格。ide

 

 查找某個文件包含內容,下面這個語句能夠解決目錄帶空格的問題:spa

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

若是目錄不帶空格,那麼能夠以下面的形式執行:.net

find ./ -name "mysql*"  |xargs  grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"
相關文章
相關標籤/搜索