搜索命令会占大量系统资源,尽量少用搜索命令。应该在服务器规划时,把所有文件的目录结构规划好,东西不乱放。
命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
语法:find [搜索范围] [匹配条件];
功能:文件搜索。
选项1:-name。 根据文件名搜索。例如:
find /etc -name init (精准匹配)在目录/etc中查找文件init
find /etc -name *init* (模糊匹配)匹配包含init的文件名
find /etc -name init* (只匹配开头)
find /etc -name init??? (?匹配任意单个字符)
find /etc -iname init/*init*/init*/init?(不区分大小写)
选项2:-size +204800 根据文件大小搜索。例如:
find / -size +204800
在根目录下查找大于100MB的文件。(+n 大于;-n小于;n等于)
注意!linux是根据数据块来算,一个数据块等于512字节等于0.5K。100MB=102400KB=204800。
选项3:-user。 根据所有者查找。例如:
find / -user shenchao
在根目录下查找所有者为shenchao的文件。(同理-group为根据所属组查找)。
选项4:-cmin。 根据时间属性查找。例如:
find /etc -cmin -5
在/etc目录下查找5分钟内被修改过属性的文件和目录。
(-amin访问时间access;-cmin文件属性,ls -l所看到的属性change;-mmin文件内容,vim修改过的内容modify)加号+表示超多多少时间,减号-表示在什么时间内。
选项5:-a和-o,-a相当于加个‘&&’,-o相当于加个‘||’。例如:
find /etc -size +163840 -a -size -204800
在/etc下查找大于80MB小于100MB的文件。
选项6:-type。根据文件类型查找(f文件;d目录;i软链接文件)。例如:
find /etc -size +163840 -a -type d
在/etc下查找大于80MB的目录。
选项7:-exec ls -l {} \;(或者-ok 命令{} \;这个区别是会二次询问确认)固定格式,对搜索结果执行操作。例如:
find /etc -name inittab -a -type f -exec ls -l {} \;
在/etc下查找inittab的仅文件并显示其详细信息。
选项8:-inum 根据i节点查找;例如
find / -inum 31524 -exec rm {} \;
在根目录下找到i节点为31524的文件并删除。通常用于删除特殊文件名的文件。
find / -inum 31524
根据硬链接的特性(相同i节点,而且不能跨分区),寻找i节点为31524的硬链接。