Linuxfind命令忽略⽬录的查⽅法
在Linux操作系统中,find命令⾮常强⼤,在⽂件与⽬录的查结合xargs命令使⽤,更是强⼤⽆⽐。
例1,根据⽂件属性查:
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,根据⽂件内容查:
grep -n -r --exclude-dir='node_modules' --exclude-dir='logs' --exclude="nohup.out"192 *
使⽤find命令在linux系统中查⽂件时,有时需要忽略某些⽬录,可以使⽤ -prune 参数来进⾏过滤。不过必须注意:要忽略的路径参数要紧跟着搜索的路径之后,否则该参数⽆法起作⽤。
例如:指定搜索/home/zth⽬录下的所有⽂件,但是会忽略/home/zth/astetc的路径:
find /home/zth -path "/home/zth/astetc" -prune -o -type f -print
按照⽂件名来搜索则为:
find /home/zth -path "/home/zth/astetc" -prune -o -type f -name "cdr_*.conf" -print
要忽略两个以上的路径如何处理?
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
注意:/( 和/) 前后都有空格。
find查命令的使用查某个⽂件包含内容,以下语句可以解决⽬录带空格的问题:
find ./ -name "mysql*" -print0 |xargs -0grep"SELECT lead_id FROM vicidial_list where vendor_lead_code"
如果⽬录不带空格,可以这样:
find ./ -name "mysql*" |xargs grep"SELECT lead_id FROM vicidial_list where vendor_lead_code"
通过以上的例⼦,⼤家应该可以掌握find命令查⽂件时,忽略相关⽬录的⽅法了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。