1.忽略文件名的大小写
使用参数-iname
2.指定目录级别
使用参数-mindepth 2和-maxdepth 5
3.反向选择查找结果
使用参数-not
4.使用inode进行查找
参数-inum,另外,使用ls -i1获取文件的inode
5.根据文件的权限进行查找
-perm -g=r用户组有读的权限
-perm g=r仅仅是用户组有读的权限,无其他权限
-perm 040表示文件全权限是---r-----,和g=r是一样的结果
6.查找空的文件
使用-empty参数
7.查找最小的五个文件
使用-ls参数,同时管道到sort进行排序,然后tail就可以显示了
8.根据不同的文件类型进行查找
-type [sdf],socket文件,directory文件,file普通文件
9.根据大小进行查找
使用参数-size +100M或者-size -100M,查找大于或者小于100M的文件
10.删除找到的某个文件
使用参数-delete或者-exec rm -rf {} \;
使用find的内建选项-delete可以减少fork带来的开销,使用-exec的方式开销比较大。
在有内建选项的时候,建议首先使用内建选项,减少fork带来的开销。
11.查找在一定时间内修改过的文件
-mtime 0,小于1天之内修改的,24h之内修改
-mtime -1,小于1天之内修改的,24h之内修改
-mtime 1,在24h~48h之内修改的
-mtime +1,修改时间超过48h
-mmin +5 -mmin -10,在6min到9min之内修改的
12.善用-print0,-print,-printf
-print这个是默认的,结果是使用空白分隔的文件list,然后交给xargs进行处理,安全性比-print0要低
-print0这个使查找结果使用NUL分隔,而不是space分隔,交给xargs进行处理会更好
-printf这个是可以加格式的打印
13.同时执行几个find命令
$ find . \( -name "*.txt" -type f -ls \) , \( -name "*.c" -type f -ls \)
测试例子,用来列出.txt和.c结尾的文件。