语法
find path -option [ -print ] [-exec -ok command ] {} ;
find . -maxdepth 1 -type f -exec mv {} /tmp ;
--> -maxdepth 1 - 表示查找深度为1。
--> -exec mv {} /tmp ; - 运行mv命令。
--> {} - 字符 '{}' 代表find到的所有内容。
--> /tmp - 表示移动到/tmp目录
--> ; - 结束 /bin/mv 命令。
参数说明
-mount, -xdev 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n 在过去 n 分钟内被读取过
-anewer file 比文件 file 更晚被读取过的文件
-atime n 在过去n天内被读取过的文件
-cmin n 在过去 n 分钟内被修改过
-cnewer file 比文件 file 更新的文件
-ctime n 在过去n天内被修改过的文件
-empty 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-path p 路径名称符合 p 的文件,ipath 会忽略大小写
-name name 文件名称符合 name 的文件。iname 会忽略大小写
-size n 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
-type 的类型
d 目录文件, c 字型装置文件, f 一般文件,s socket
p 具名贮列, b 区块装置文件, l 符号连结
其他说明
mtime 当文件的「内容数据」更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。 ctime 当该文件的状态改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间。 atime 当“该文件的内容被读取”时,就会更新这个读取时间。我们使用cat去读取/etc/man.config,就会更新该文件atime.
常用例子
列出当前目录下三层深度的文件 find . -maxdepth 3 -type f
查找 /etc 下 rpm 目录 find /etc/ -name rpm -type d
在查找的结果中直接以命令操作 find /tmp/ -mtime +10 -exec rm -rf {} ;
在/etc 目录中查找 passwd 文件,并以长格式显示 find /etc/ -name "passwd" |xargs ls -l
在 etc 目录下查找大于 1k 并且小于 10k 的文件 find /etc -size +1k -a -size -10k
查找3天内的未修改的文件
find /var/log -type f -mtime -3
查找10天以上没动过的文件 find /var/log -type f -mtime +10 -a -atime +10 -a -ctime +10
查找空目录并删除 find . -type d -empty -exec rmdir {} ; find . -type d -empty |xargs rmdir
修改文件和目录权限 find ./ -type d |xargs -i chmod 755 {} find ./ -type f |xargs -i chmod 644 {}
查找大文件 find . -type f -exec stat -c "%s %n" {} ; | sort -nr | head -2 注 : sort [] 文件名 -r 反向排序 -n 以数值型进行排序,默认使用字符串类型,head [] 显示文件头 默认显示前 10 行,-n 20 文件名 显示前 20 行