在使用find命令时有两个选项:
1、-exec选项
2、-ok选项
这两个选项非常相似,前一个直接执行,不会有任何提醒,后一个在执行时会给出提醒。如果是执行删除动作时,使用-exec时要非常小心谨慎。具体用法如下:
格式:
find 搜索路径 [选项] 搜索内容 -exec 命令2 {} \ ;
这里,-exec {} \ ;是固定格式,只要有-exec ,最后面一定要有{} \ ; 其实"{}"代表find命令查找到的结果,交由-exec调用命令2来处理。
比如下面例子:
1、在test目录,查找大于1K的文件,并把找到文件用ls -lh显示文件详细信息。
[root@k8smaster test]# ls -lh
total 4.0K
-rw-r--r-- 1 root root 1.7K Oct 11 09:16 abc
drwxr-xr-x 2 root root 6 Oct 11 09:10 ABC
-rw-r--r-- 1 root root 0 Oct 11 09:09 bcd
drwxr-xr-x 2 root root 6 Oct 11 09:10 BCD
[root@k8smaster test]# find . -type f -a -size +1k
./abc
[root@k8smaster test]# find . -type f -a -size +1k -exec ls -lh {} \;
-rw-r--r-- 1 root root 1.7K Oct 11 09:16 ./abc
[root@k8smaster test]#
2、在test目录,查找大于1K的文件,并把找到结果删除
[root@k8smaster test]# ls
abc ABC bcd BCD
[root@k8smaster test]# find . -type f -a -size +1k -exec rm -rf {} \;
[root@k8smaster test]# ls
ABC bcd BCD
[root@k8smaster test]#
3、使用选项-ok,在test目录,查找小于1k文件,并把找到结果删除
可以看到,执行时会有提醒,是否要rm。
[root@k8smaster test]# ls
abc ABC bcd BCD
[root@k8smaster test]# find . -type f -a -size +1k -exec rm -rf {} \;
[root@k8smaster test]# ls
ABC bcd BCD
[root@k8smaster test]# find . -type f -a -size -1k -ok rm -rf {} \;
< rm ... ./bcd > ? y
[root@k8smaster test]# ls
ABC BCD
[root@k8smaster test]#
当在批量查找删除时,比如查找10天前的日志,执行删除时用-ok更安全些,用-exec要小心谨慎,特别在写shell脚本方面。
另外,除了上面两个选项,再补充几个常用的选项
1、-name 按文件名找时。
2、-size 按文件大小查找
3、-mtime 按日期找查
4、-type 按文件类型找果,-type f 查找文件。-type d 查找目录
5、-a 逻辑于找查,-o逻辑或查找 -not逻辑非查找
6、-prem 权限查找
7、-user文件所有者查找 -nouser 非文件所有查找查