find排除文件或目录搜索
man 信息man find查看输出的-path选项: -path pattern 从man中得知,可以使用了-path pattern -prune实现,如果想要在排除的结果中继续操作的话可以使用-o 继续处理匹配项。 1、排除某个目录查找:find . -path "pattern" -prune -o -print #在当前目录下查找时pattern要以相对路径开头;如果使用绝对路径查找的话,pattern也要使用绝对路径 2、排除某个文件:find . ! -name filename 3、排除多个目录:find . -path "pattern1" -prune -o -path "pattern2" -prune -o ! -name "." 或 find . -path ( -path pattern1 -o -path pattern2 ) -prune -o -print #使用() 实例假设kernel_modules目录结构如下: [root@localhost kernel_modules]# ls -R 1、列出所有不在imp1目录下的文件 [root@localhost kernel_modules]# find . -path "./imp1" -prune -o ! -name "." ./imp1 需要注意的是-path带的参数要为 "./imp1",否则起不到排除imp目录的作用,因为imp1目录下的文件名是./imp1/filename,与imp1 pattern不匹配 2、查找文件名为非*.c的文件 find . ! -name "*.c" 3、排除多个目录 先使用cp imp1 imp2 -r 命令生成imp2目录,然后排除imp1和imp2进行查找 [root@localhost kernel_modules]# find . ( -path "./imp1" -o -path "./imp2" ) -prune -o ! -name "." ./proc-module.c 使用find . -path "./imp1" -prune -o -path "./imp2" -prune -o ! -name "."效果也一样,有兴趣的话可以自己尝试下 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |