且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

find 常见用法

更新时间:2022-08-21 20:25:59

1、find

find [path] -option [-print] [ -exec -ok command] {} \;

search for files in a directory hierarchy

-print 将查找到的文件输出到标准输出,一个文件一行

-delete删除找出的文件

-exec command {} \; 将查到的文件执行command操作,{}\;之间有空格,"\;"是固定的结束符;{}会被文件替换掉

-ok和-exec相同,不过在操作前要询用户

2、option

-type b/d/c/p/l/f #查是块设备/目录/字符设备/管道/符号链接/普通文件

-perm #按执行权限来查找

-depth #使查找在进入子目录前先行查找完本目录

-follow #如果遇到符号链接文件,就跟踪链接所指的文件

实例:

$find . -type d -print打印目录结构

$find . ! -type d -print 打印非目录文件

find /usr/include -name '*.h' -exec grep AF_INEF6 {} \; (因grep无法递归搜索子目录,故可以和find相结合使用。 在/usr/include 所有子目录中的.h文件中找字串AF_INEF6)

$find /etc -name "passwd*" -exec grep "cnscn" {} \; 看是否存在cnscn用户

$find . -name "yao*" | xargs file 执行命令显示文件类型

$find -name ap* -o -name may* 查找以apmay开头的文件

$find /home -mtime -2 在/home下查最近两天内改动过的文件

$find /home -mtime +2 在/home下查最近两天前改动过的文件

$find /home -mmin +60 在/home下查60分钟前改动过的文件

$find /home -amin +30 查最近30分钟前被存取过的文件

11 $find /home -mmin +60 在/home下查60分钟前改动过的文件

12 $find /home -amin  +30 查最近30分钟前被存取过的文件

13 $find /home -uid +501 列出/home下用户的uid大于501的文件或目录

14 $find /home -nouser 列出/home内不属于本地用户的文件或目录

15 $find /home -nogroup 列出/home内不属于本地组的文件或目录

16 $find /hom -name t.txt -maxdepth 4 列出/hometmp.txt深度最多为3

17 $find /home -name tmp.txt -mindepth 3 从第2层开始查

18 $find /home -empty 查找大小为0的文件或空目录

19 find /tmp/ -ctime +7 -delete 删除/tmp目录下一周以前创建的文件

20 find ./ -perm  755 -print

3、示例

1)基本用法

find / -name 文件名

与大小相关:

-size n[bkMG] 大小为nbbitc:byte, k:KBM:MBG:GB

find / -size 1500c (查找1,500字节大小的文件,c表示字节)

find / -size +1500c (查找大于1,500字节大小的文件,+表示大于)

find / -size -1500c (查找小于1,500字节大小的文件,-表示小于)

与时间相关:

find / -amin n 最后n分钟

find / -atime n 最后n

find / -cmin n 最后n分钟改变状态

find / -ctime n 最后n天改变状态

find / -newer file 比file所指的文件还要新的文件

2)高级用法1

find / -empty 空白文件、空白文件夹、没有子目录的文件夹

find / -false 查找系统中总是错误的文件

find / -fstype type 找存在于指定文件系统的文件,如typeext2

find / -gid n 组idn的文件

find / -group gname 组名为gname的文件

find / -depth n 在某层指定目录中优先查找文件内容

find / -maxdepth levels 在某个层次目录中按递减方式查找

3)高级查找2

-and 条件与 -or 条件或

4)其他

-user name 所有者用户名称是name的文件

-group name 所有者用户组群名称是name的文件

参考

1】 总结的不错

http://techbbs.zol.com.cn/1/85_883.html

http://bbs.linuxtone.org/thread-1425-1-1.html

http://www.flatws.cn/article/program/shell/2011-06-13/30184.html

2】 更多关于find的介绍

http://bbs.linuxtone.org/thread-1696-1-1.html

http://linux.die.net/man/1/find

3】 必看好文

http://www.linuxsir.org/main/node/137?q=node/137#1.1