Find 查找命令时过滤掉某些文件或目录 以及 -maxdepth、-mindepth的用法

比如查找/data/web/ssy/online路径下的的目录,并统计目录大小,以G位单位进行排序(默认为降序),并统计前10个大小的目录。命令如下:
# find /data/web/ssy/online/* -maxdepth 0 -type d -exec /usr/bin/du -sh {} \;|grep '[0-9]G'|sort -rh|head -10

查找/data/web/ssy/online路径下除tmp目录之外的目录,并统计目录大小,以G位单位进行排序(默认为降序),并统计前10个大小的目录。命令如下
# find /data/web/ssy/online/* -path /data/web/ssy/online/tmp -prune -o -maxdepth 0 -type d -exec /usr/bin/du -sh {} \;|grep '[0-9]G'|sort -rh|head -10

注意:
1)"-maxdepth 0" 表示只查找到/data/web/ssy/online下的目录。如果是"-maxdepth 1"则表示查找到/data/web/ssy/online/xxx下的目录
2)find命令中的过滤、忽略、排除使用"-path 过滤的文件或目录-prune -o ",其中-prune类似于if判断,如果-prune之前的语句为真,比如找到了
前面-path指定的/data/web/ssy/online/tmp目录,就不再执行后面-o跟的语句了,如果没有找到则执行后面的语句。这样就做到了排除效果!
其中的"-o" 是 "-or" 的意思!
3)-path要过滤掉的文件或目录路径参数一定要紧跟在要搜索的路径之后,否则过滤效果就不会实现!!也就是说上面的"-path /data/web/ssy/online/tmp"
必须紧跟着放在"/data/web/ssy/online/*"后面,否则查找时就不会过来掉/data/web/ssy/online/tmp这个目录。

1)当要搜索的目录不是全路径时,要过滤掉的目录必须是"./test2"才能实现过滤效果。如果是"test2"或者"./test2/"都不能实现过滤效果。
2)当要搜索的目录是全路径时,要过滤掉的目录也必须是全路径才能实现过滤效果!要过滤掉的目录后面不能加"/",否则也不能实现过滤效果。
3)过滤操作"-path /opt/kevin/test2 -prune -o"必须紧跟在要搜索路径的后面才能实现过滤效果,否则也不能实现过滤效果。

过滤多个目录:

find /opt/kevin/ \( -path /opt/kevin/test2 -o -path /opt/kevin/test3 \) -prune -o -type f -name list -print /opt/kevin/test1/list

[root@localhost kevin]# pwd
/opt/kevin
[root@localhost kevin]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 21 18:51 haha
-rw-r--r-- 1 root root 0 Nov 21 18:51 haha1
-rw-r--r-- 1 root root 0 Nov 21 18:51 haha2
-rw-r--r-- 1 root root 0 Nov 21 18:51 haha3
-rw-r--r-- 1 root root 0 Nov 21 18:51 haha4
drwxr-xr-x 2 root root 18 Nov 21 18:24 test1
drwxr-xr-x 2 root root 18 Nov 21 18:24 test2
drwxr-xr-x 2 root root 18 Nov 21 18:24 test3

-maxdepth 0 表示最小目录层级是0,即搜索路径它本身
[root@localhost kevin]# find . -maxdepth 0 -type f

但是如果当前路径加入"*"使用"-maxdepth 0" 效果和 当前路径不加"*"使用"-maxdepth 1" 是一样的!
[root@localhost kevin]# find ./* -maxdepth 0 -type f
./haha
./haha1
./haha2
./haha3
./haha4

[root@localhost kevin]# find . -maxdepth 1 -type f
./haha
./haha1
./haha2
./haha3
./haha4

Find 查找命令时过滤掉某些文件或目录 以及 -maxdepth、-mindepth的用法

 

 
喜欢 0
分享