locate [文件名]

在后台数据库中按文件名搜索, 搜索速度快, 只能文件名搜索

  • locate命令所搜索的后台数据库: /var/lib/mlocate

    • 默认每天更新一次
  • 更新数据库: updatedb

  • 按照配置文件搜索: /etc/updatedb.conf

locatewhereiswhich都使用该文件配置

  1. # 配置是否生效
  2. PRUNE_BIND_MOUNTS="yes"
  3. # 不筛选包含关键字
  4. # PRUNENAMES=".git .bzr .hg .svn"
  5. # 不搜索目录
  6. PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /var/lib/schroot"
  7. # 不筛选的文件系统
  8. PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"

whereis [选项] [命令名]

搜索命令的命令, 搜索命令所在路径及帮助文档所在位置

  • 选项:
    --b: 只查找可执行文件
    --m: 只查找帮助文件

which

whereis 作用几乎相同, 会显示命令别名

  • whereiswhich 搜索的是 $PATH 下的命令路径

find

搜索符合条件的文件名, 如果需要匹配, 使用通配符匹配, 通配符是完全匹配

find [搜索范围] [搜索条件]

搜索条件

  • 不区分大小写

    • find /root -iname install.log
  • 按照所有者搜索

    • find /root -user root
  • 查找没有所有者的文件(内核创建文件, 外来windows创建的文件, Windows会忽略文件所有者)

    • find /root -nouser
  • 查找10天前修改的文件

    • find /var/log/ -mtime +10

    • -10: 10天内修改的文件

    • 10: 10天当天修改的文件

    • +10: 10天前修改的文件

    • atime: 文件访问时间

    • ctime: 改变文件属性时间

    • mtime: 修改文件内容时间

  • 搜索文件大小是 25kb 的文件

    • find . -size 25k

    • -25: 小于 25kb 的文件

    • 25: 等于 25kb 的文件

    • +25: 大于 25kb 的文件

    • 兆字节需大写: 25M

  • 查找 i 节点是 262422 的文件

    • find . -inum 262422

    • 查询 i 节点: ls -i

  • 查找 /etc/ 目录下, 大于 20kb 并且小于 50kb 的文件

    • find /etc -size +20k -a -size -50k

    • -a: and 逻辑与

    • -o: or 逻辑或

  • 处理搜索结果:

    • -exec [处理前面结果命令] {} \;}

    • find /etc -size +20k -a -size -50k -exec ls -lh {} \;

通配符:

  • *: 匹配任意内容
find /root -name "install.log*"
/root/install.log
/root/install.log.syslog
  • ?: 匹配任意一个字符

  • []: 匹配任意一个中括号内的字符

find /root -name "ab[cd]"
/root/abc
/root/abd

grep

grep [选项] 字符串 文件名

在文件中匹配符合条件的字符串

  • 选项:

    • -i: 忽略大小写

    • -v: 排除指定字符串