Linux find命令详解和实例说明

感谢有奉献精神的人

转自:http://blog.csdn.net/lsbhjshyn/article/details/25541745

find:搜索文件或目录
例:find . -name '*.jsp' -mtime -90  //查找当前目录下90天之内修改过的以jsp后缀的文件
-name: 根据名字查找,支持glob通配符* ? []等
-iname: 忽略名称大小写
-empty: 查找所有空文件或者空目录,连接空文件除外
-user USERNAME:查找某个属主的文件
-group GRPNAME:查找某个属组的文件
-uid:根据属主ID查找相关文件
-gid:根据属组ID查找相关文件
-nouser: 查找没有属主的文件
-nogroup:查找没有属组的文件
-exec :对找到的档案执行命令(固定格式:'-exec 命令 {} \;')不询问。-ok执行前询问确认。格式'-ok 命令 {} \;'    其中‘{}’表示find查询的结果,'\'为转义字符,表示让一些命令或符合使用本身含义
例: find . -size +10M -exec ls -lh {} \;  //查找当前目录下大小超过10M的,并显示详细信息


组合查找条件
-a:与
-o:或
-not或!:非
例:find /etc -name ‘init*’ -a -user root    //查找/etc目录下,文件名以init开头,并且文件所有者为root的文件


-type 根据文件类型查找。f:二进制文件 l:软连接文件 d:目录
-size  +[-]UNIT  表示大于或小于多少的文件
提示:检索文件大小时,以linux的black数据块大小换算,这样查询更快,更精确。例如:centos5.5的black大小为512字节,查找一个大于100M的文件命令为:find /etc -size +204800   //查找/etc下大于100M的文件

例:ls -ldh `find /etc/ -size +2k`   //查看/etc目录下大于2k的文件
    ls -ldh `find /etc/ -size -2k`   //查看/etc目录下小于2k的文件  
    find /etc -size +163840 -a -size -204800     //查找/etc下大于80M小于100M的文件


根据时间戳查找:
-amin [+/-]n:n分钟前访问的文件
-mmin [+/-]n: n分钟前修改过的文件  
-cmin [+/-]n: n分钟前改变过的文件
-atime: [+/-]n n天内访问过的文件
-mtime: [+/-]n n天内修改过的文件
-ctime: [+/-]n n天内改变过的文件
其中:c 为change 改变,表示文件属性被修改过,所有者,所属组,权限等;a为access 访问,表示文件被访问过; m为modify 修改,表示文件内容被修改过  -:表示在指定值之内;+:表示超过指定值


-inum:根据文件i节点(inode值)查找  (ls -i file即可显示文件inode)
例:find /data -name ‘*.log’ -a -inum 767301 -exec rm -rf {} \;   //查找/data目录下以.log结尾并且inode值为7673016的文件,之后强制删除




根据权限查找文件:
-perm node :精确查找指定权限的文件      例:find /etc -perm 755  //在etc目录下查找权限为755的文件
-perm -node:分别在对应的权限范围内的文件(符合条件的为与关系)  例:find /etc -perm -755 //查找etc目录下属主、属组、其他权限分别大于755(即权限对应位是否存在的包含关系)的文件
例:find /data -perm -002   //查找data目录下其他用户可写的文件
-perm /node 查找分别对应的权限位和条件为或关系的文件


类似功能命令:locate 寻找文件或目录 (是在linux的系统目录文件的数据库中查找,结果会有延迟,若要及时可手动执行updatedb更新系统目录文件数据库)


发布了103 篇原创文章 · 获赞 60 · 访问量 70万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章