find
1 按名称查找
固定名称搜索(区分大小写):find 位置 -name 名称。
eg:find /tmp -name clj
执行完成后,找到了/tmp下的clj
固定名称搜索(不区分大小写):find 位置 -iname 名称。
eg:find /tmp -iname clj
执行完成后,就会找到不区分大小写的所有文件和目录
通配符查找:使用*和?进行查找
eg: find /tmp -name clj*
*代表所左右字符,这个命令就是 找到以clj开头的所有的文件和目录。此外,你还可以使用?来进行查询,比如: find /tmp -name clj??的意思就是,查找的文件或目录以clj开头,后面还有两位你不知道是什么。几个?代表后边有几位。
2 按大小查找
find 位置 -size +-= 文件大小。+代表大于,-代表小于,=代表等于
eg:find /tmp -size + 2048。这个代表找到/tmp下大于1M的文件或目录。有人会问,不应该是2M吗?其实在这个命令里,文件的大小是按照 数据块来算的, 1数据块=0.5k ,而1M=1024k,1024k也就是2048数据块了。所以,如果向找大于1M的文件或目录,要执行的命令是find /tmp -size + 2048,同理,减号和等号也是一样的。
3 按所有者和所属组来查找
find /home -user 所有者(所属组)名称
eg: find /home -user clj。这条命令就是找到所有者为clj的文件和目录
eg: find /home -group clj。这条命令就是找到所属组为clj的文件和目录
4 根据时间属性来查找
find 位置 -amin,-cmin,-mmin +-时间
-amin +-时间 | 减号代表一定时间内浏览过这个文件,加号代表在一定时间之前浏览过 | eg:find /tmp -amin +5代表找到在tmp下,五分钟之前被浏览的文件或目录 |
-cmin +-时间 | 减号代表一定时间内修改过这个文件属性(就是你用ls命令可以看到的那些),加号代表在一定时间之前修改过 | eg:find /tmp -cmin +5代表找到在tmp下,五分钟之前被修改过属性的文件或目录 |
-mmin +-时间 | 减号代表一定时间内修改过这个文件内容(就是文件里的内容),加号代表在一定时间之前修改过 | eg:find /tmp -mmin -5代表找到在tmp下,五分钟之内被修改过内容的文件或目录 |
5 根据i节点来查找
find 位置 -inum i节点号。eg:find /tmp -inum 522243 代表你要在tmp下找到i节点号为522243的文件或目录
6 根据类型查找
find 位置 -type f d l :f代表是文件,d代表是目录,l代表软链接。
eg: find /tmp -type f 代表找到tmp下的文件
7 条件并列查找
find 位置 条件1 -o -a 条件2,-a代表两个条件都满足,-o代表只要满足一个条件即可。
eg: find /tmp -type f -a -name clj* 代表找到tmp下名称以clj开头的文件(因为是f所以不会查找目录,只查找文件)。
8 查找并操作
有的时候,在你查出来一个文件或者目录的时候,你想立刻就去修改它,而不是找到了之后再去那个目录下或者再敲一遍命令去修改,这时候我们就需要用到 -ok 或者 -exec命令了
格式:find 位置 条件 -exec(-ok) 操作 {} \;
eg: find /tmp -name clj* -a -type f -exec cat {} \; 红色部分就当作是固定格式来看就可以了
这个命令就是找到tmp下以clj开头的文件,并浏览内容,当然,-exec也可以换成-ok,只不过-ok会有一个提示。
ok,打完收工!!!