随笔 - 2, 文章 - 2, 评论 - 0, 阅读 - 2697

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

find命令排除指定目录搜寻文件

Posted on   蟪蛄|大梦春秋  阅读(1502)  评论(0编辑  收藏  举报

Find 命令在指定路径中搜索筛选文件,并排除非期望目录。

第一种:

语法:

find <path> [-path <path> -prune -o] [...] 

中括号是可选项,[...] 代表前面的可选项可以多次重复

譬如:

find ./openembedded-core -path ./openembedded-core/meta/recipes-support -prune -o -name "*.bb" 

查找当前目录openembedded-core文件夹下的 *.bb, 排除掉 ./openembedded-core/meta/recipes-support目录

第二种:

语法:

find <path> \( [-path <path> -o] [...] \) -prune -o

和第一种类似,只不过将多个排除的路径放在了 () 中,注意括号用 \ 转义

譬如:

find 
./openembedded-core -path 
\( -path ./meta-openembedded -o -path ./build \) -prune -o -name "*.bb" 

第三种:

这种方式使用了 -not

语法:

find <path> [-not -path <path_pattern>] [...]

注意:这里的 <path_pattern> 是一个带通配符的模式,还需要加上引号,如:'./meta-openembedded/*'

find 
./openembedded-core 
-not -path './build/*' -not -path './meta-openembedded/*' -name "*.bb" 

第四种:

语法和第三种一样,只不过 -not 可以用 ! 来替换:

find <path> [ ! -path <path_pattern>] [...] 

譬如:

find 
./openembedded-core 
! -path './build/*' ! -path '*/
meta-openembedded
/*' -name "*.bb"
 
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示