find用法总结

简介:


find用法总结


Find

语法: find [路径] [参数]  

注:如果不输入路径,查询当前目录!

小技巧Tips:

  • 在使用 -maxdepth 参数的时候,如果有多个选项,把 maxdepth 放到路径的后面,其他参数的前面,否则可能会出错。

  • -name 后面养成习惯加双引号,避免出错。

  • 如果不指定文件的具体路径,可以写根目录 / ,扩大搜索范围。比如在搜索一个 inode 号的时候,毫无头绪,就可以使用根目录。

  • find 可以和正则表达式匹配一起使用 !取反,*通配符。

参数

  • -name  文件名字

  • -iname 忽略文件名的大小写,匹配所有大小写字母

  1.查找 /tmp 目录下名字为 aming开头的所有文件。

  find /tmp -name "aming*"

  注意:这里并不能使用 ^aming

  2.查找tmp目录下包含abcde字母的文件,不区分大小

  find /tmp -iname abcde

  • -type  f文件,d目录,l连接文件,b块设备,c串行端口设备

  1.查找所有的隐藏目录。

  find . -type d -name ".*"

  2.在根目录下查找所有的目录。

  find / -type d -name ".*"

 /dev/.mdadm

  /dev/.udev

  /tmp/.ICE-unix

  • -size  通过文件大小查找

  • -inum  查找 inode 

  find / -inum 141418

  • -user  指定属主,也可以使用 uid

  • -group 指定用户组,也可以使用 gid

  1.搜索tmp目录下所属组group1,所属主user1的文件

  find /tmp -type f -user user1 -group group1

  • -*time mtime 创建或更改时间;atime 访问时间;ctime文件inode号被修改。

  • -*min  mmin ±n,大于小于 n 分钟

                -mtime +365 创建或更改时间,大于365天的

                -mtime -10  创建或更改时间,小于10天

                -atime +365 访问或读取时间,大于365天

                -atime -10  访问或读取时间,小于10天

  1. 搜索 tmp 目录下,修改时间一年内的文件

  find /tmp  -type f  -mtime -365


  • -not  查找不满足条件的文件,用在特定的条件之前

  1.搜索目录下,修改时间一年内,不是文件的其他类型

  find . -not -type f -mtime -365

  2.搜索目录下,修改时间超过一年的并且大于100M的文件

  find . -type f -not -mtime -365 -a -size +100M

  3.列出tmp目录下一年内都没有改变的文件

  find /tmp -type f ! -mtime -365

  • -o    或者

  • -a    并且

  1.搜索tmp目录下以 a 开头并且以 c 结尾的文件

  find /tmp -name "a*" -a -name "*c" -type f

  2. 搜索 tmp 目录下,不是以 a 开头,并且大小超过100M的文件

  find /tmp -not -name "a*" -a -name "*txt" -size +100M -tyep f

  3.搜索当前目录下10天以前的文件,或者权限为644的的文件和目录

  find . -type f -mtime +10 -o -perm 644

  • -mindepth 指定目录的开始深度

                -mindepth 0 不限制

                -mindepth 1 从当前目录及其内容开始

                -mindepth 2 从一级子目录内容开始,当前目录的文件和目录不再范围内

  • -maxdepth 指定目录的最大深度

                -maxdepth 0

                -maxdepth 1 只查目录本身及其内部文件,包括一级目录本身

                -maxdepth 2 目录内的文件,包括目录下的一级子目录及其文件

  1.找出 tmp 目录下的所有一级子目录


  find /tmp -maxdepth 1 -type d


  2.在root目录下及其最大两层深度的子目录中,查找 passwd 文件


  find /root -maxdepth 3 -name passwd


  3.在第二层和第四层子目录之间查找 passwd 文件


  find . -mindepth 3 -maxdepth 5 -name passwd


  • -perm 指定文件权限 

            -perm  mode,匹配项必须严格匹配此权限。

            -perm -mode,匹配项必须不少于此权限。匹配大于此权限的文件。

            -perm /mode,匹配项中 任何一组包含要求权限中的任意一个 就可以,仅限于普通权限,相对于单独的 rwx 里面的任意一个权限,并非 user group others 654里面的 6 5 4 任意权限。如果权限使 644,转换为二进制 110 100 100, 那么找到的文件只需匹配到任意一个 1 即可,即 user 可读或可写、group 可读或可写、other 可读或可写,均可以匹配。

            -perm /mode(四位),和3位的数字权限规则一致,区别在于特殊权限和普通权限独立思考。

            -perm +mode,功能和/一样。

  • -path "..." -prune -o [其他参数] -print

         ... 代表排除指定的文件或者目录,其他均为固定写法。注意,如果在排除目录的时候,最后面不能有/符号,√ "/tmp/123"  ×"/tmp/123/"。

  • -empty   空文件,空目录,

  • -false   总是出错的文件

  • -fstype  指定文件类型查找,ext3 ext4





     本文转自品鉴初心51CTO博客,原文链接:http://blog.51cto.com/wutengfei/1914893 ,如需转载请自行联系原作者

相关文章
|
4月前
|
Unix Shell Linux
如何使用find查找命令
如何使用find查找命令
find
find
96 0
|
C# 索引
C# index of 用法(转载)
查找字串中指定字符或字串首次出现的位置,返首索引值,如:  str1.IndexOf("字"); //查找“字”在str1中的索引值(位置) str1.IndexOf("字串");//查找“字串”的第一个字符在str1中的索引值(位置) str1.IndexOf("字",start,end);//从str1第start+1个字符起,查找end个字符,查找“字”在字符串S
1298 1
|
安全 Shell