用linux的时候经常需要查找文件,在linux里有几个命令可以查找文件,但find命令我觉得是最强大的,用好了真的可以事半功倍,但也是最复杂的。
find [path] [-option] [ -print -exec -ok command] {} \;{}与\之间有空格。
[path] #要查找的目录,省略为当前目录。
[-option] #查找的方法
[-print] #find命令将匹配的文件输出到标准输出。
[-exec] #find命令对匹配的文件执行该参数所给出的shell命令。-exec 参数后面是命令,它终止是以 ;(分号) 为结束标志的,所以这句命令后面的分号是不可缺少的,因为分号在不同的系统 中意义不同,所以前面加反斜杠转义。
{} 花括号代表前面find查找出来的文件名。
-ok: #同-exec
例:
find / -name filename 在根目录里面搜索文件名为filename的文件
find /etc -name *s* 在/etc目录里面搜索带有s的文件
find /etc -name *S 在/etc目录里面搜索以s结尾的文件
find /etc -name s* 在/etc目录里面搜索以s开头的文件
find / -amin -10 在系统中搜索最后10分钟访问的文件
find / -atime -2 查找在系统中最后48小时访问的文件
find / -mmin -5 查找在系统中最后5分钟修改过的文件
find / -mtime -1 查找在系统中最后24小时修改过的文件
find / -ctime -1 查找在系统中最后24小时被改变状态的文件
find / -user username 查找在系统中属于用户username的文件
find / -group groupname groupname 查找在系统中属于groupname组的文件
find / -empty 查找在系统中为空的文件或者是文件夹
find / -inum 3 查找inode号为3的文件
find / -type d 查找为文件类型为文件夹的文件d为文件夹
f 普通文件
d 目录文件
l 链接文件
b 块设备文件
c 字符设备文件
p 管道文件
s socket文件
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} \; 在/tmp下查找temp.txt文件并输出内容。
find /tmp -name tmp.txt -ok rm {} \; 在/tmp下查找tmp.txt文件并删除。