1、按文件名递归查询
find –name “filename”
2、按文件名递归查询,不区分大小写
find –iname “filename”
3、查找当前目录及深度为1的子目录里面文件
find –maxdepth 2 –name “filename”
4、在第二层子目录和第四层子目录之间查找文件
find –mindepth 3 –maxdepth 5 –name “filename”
5、查找相关文件,并执行相关命令
find –name “filename” –exec stat {} \;
6、反查找,查找名字不是filename的文件或目录
find –not –name “filename”
7、通过inode编号查找文件,每个文件都有一个独一无二的inode编号
ls –i1 filename
656193 -rw-r--r-- 1 root root 216 May 13 10:14 filename
find –inum 656193 –exec mv {} new-filename {} \;
8、特别注意,如果有一个文件为file?name,那如果执行rm file?name,会导致file1name file2name等文件被删除,解决办法是通过inode编号删除
9、通过文件权限查找文件,查找组具有读权限的文件
find –perm –g=r –type f –exec ls –l {} \;
-rw-r—r--
10、查找通组具有只读权限的文件
find –perm g=r –type f –exec ls –l {} \;
11、查找所有的空文件(大小为0字节的文件)
find –empty
12、列出当前目录下的非隐藏空文件
find –empty –not –name “.*”
13、查找socket类型文件
find -type s
14、查找大于100M的文件
find –size +100M
15、查找100M大小的文件
find –size 100M
16、find设置别名
alias renamefind=”find . –iname a.out –exec rm {} \;”
17、时间类型查找
find –mmin –n 查找n分钟之内被修改过的文件
find –mtime –n 查找n天之内被修改过的文件
find –amin –n 查找n分钟之内被访问过的文件
find –atime –n 查找n天之内被访问过的文件
find –cmin –n 查找n分钟之内文件状态变化过的
find –ctime –n 查找n天之内文件状态变化过的
18、查找非隐藏文件
find . \( ! -regex ".*/\..*" \)
19、查找文件修改时间在某一文件修改后的文件
find –newer file #使用场景,新增用户之后跟踪系统的活动状态
20、查找文件访问时间在某一个文件的修改时间之后的文件
find –newer /etc/passwd
21、查找状态改变时间在某个文件修改时间之后的文件
find –cnewer file
22、在同一个命令中使用多个{}
find -name "*.html" -exec ./mv.sh '{}' \;
任何情况下你在find命令执行中想使用同一个文件名多次的话,先写一个脚本,然后在find中通过-exec执行这个脚本,把文件名参数传递进去就行
23、find执行多具命令
在find的man page页面中,下面是一次文件查找遍历中使用两条命令的语法举例,下面的find命令的例子,遍历文件系统一次,列出拥有setuid属性的文件和目录,写入/root/suid.txt文件, 如果文件大小超过100M,将其记录到/root/big.txt中
# find / \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \ \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)