Linux复习——文件查找命令

文件查找命令

find locate whereis which

1、find: 在Linux系统中用来进行文件搜索用的最多的命令,功能特别强大。但是尽量少用find命令去执行搜索任务,就算要搜索也应该尽量缩小范围,且不要在服务器使用高峰期进行文件搜索,因为搜索也是很占系统资源的。

  • 根据文件或目录搜索:

    • find / -name passwd 查找根目录/ 下叫passwd的文件
      Linux复习——文件查找命令
    • find /etc -name “*.sh” 查找/etc下以 .sh 结尾的文件
    • find /etc -name “host*” 查找/etc下以 host开头的文件
    • find /etc -iname abc 忽略大小写字母查询
  • 根据文件大小搜索

    • 常见大小单位

      c:字节

      k:Kb

      M:Mb

      G:Gb

    • find /root -size +50k 查找/root目录下大于50 kb 的文件

      find /root -size -50k - 是小于

      find /root -size 50k 等于

      find /root -size +50k -size -100k

      查找/root目录下大于50 kb 并且小于100kb 的文件

  • 根据文件类型搜索

    • 文件类型

    • find /etc -type f

      f:普通文件

      d:目录文件

      l:链接文件

      b:块设备文件

      c:字符设备文件

      p:管道文件

      s:套接字文件

    • find / -type f

      find / -type f -name “*.txt”

      find /usr -type d -name “unix*”

      find / -type d -empty

      find /dev -type b

      find /etc -type d

  • 根据时间搜索

    • 时间参数

      • 修改时间(mtime):最后一次文件内容有过更 改的时间点
      • 访问时间(atime):最后一次文件有被读取过 的时间点
      • 变更时间(ctime):最后一次文件有被变更过 的时间点,包括内容更改、权限更改等
    • find /usr -type f -mtime 2

      /usr目录中两天前被修改过的文件

      find /usr -type f -mtime +50 -mtime -100

      /usr下50到100天之前修改过的文件

      find /usr -type f -mtime 2 -atime 1

      两天前被修改过且1天前被访问过的文件

      find /usr -type f -mmin 5 -amin 2

      5分钟前被修改过且2分钟前被访问过的文件

      find /root -cmin -30

      30分钟内被变更过的文件

      find / -newer log1 ! -newer log2

      更改时间比log1新,比log2旧的文件

  • 根据所属权限搜索

    • fifind /usr -perm u=rwx,g-rx,o=r

      fifind /usr -perm 644

      fifind / -user “nickel”

      fifind / -uid “1001”

      fifind / -group “test”

      fifind / -gid “1002”

  • 综合搜索

    • 反向搜索

    • 忽略某个文件或目录

    • 限制目录的遍历成熟

    • 逻辑组合and、or

    • 对搜索结果执行命令

      • 删除:-delete
      • 执行:-exec
      • 显示:-ls
    • 查找当前目录及子目录下大于1G的文件:

      # find ./ -size +1G -exec ls -lh {} \;
      

2、locate :在后台数据库中按文件名全盘搜索,速度比find 快得多,但是对于刚创建的文件还没有被收录到数据库,可能搜不到。

locate 的使用

[root@localhost etc]# locate inittab
-bash: locate: command not found      # 系统上没有安装locate
[root@localhost etc]# yum install -y mlocate  # 安装mlocate包
[root@localhost etc]# locate inittab      # 查找inittab这个文件
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory # 文件数据库未建立
[root@localhost etc]# **updatedb**     # 手动生成文件数据库
[root@localhost etc]# locate inittab  # 可以看到此时文件数据库已生成,查找到包含inittab字符串的文件

Linux复习——文件查找命令
3、whereis

在数据库中搜索二进制文件(-b)、man说明文件(-m)和源代码文件(-s)

whereis [-bmsu] 文件或者目录名

-b: 只找二进制格式的文件

-m: 只找在说明文件manual 路劲下的文件

-s: 只找source 源文件

-u: 查找不在上述三个选项中的其他特殊文件

查询ifconfig 文件名

[root@localhost etc]# whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@localhost etc]# whereis -b ifconfig
ifconfig: /usr/sbin/ifconfig
[root@localhost etc]# whereis -m ifconfig
ifconfig: /usr/share/man/man8/ifconfig.8.gz
[root@localhost etc]# whereis -s ifconfig
ifconfig:

4、which

用于查找命令是否存在,以及命令的存放位置
Linux复习——文件查找命令

上一篇:分享Asp.net做的几个实用示例,数据报表、二维码、数据抓取、批量上传图片


下一篇:(转)js 正则表达式之test函数讲解