在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"