linux查找命令(find、locate、which、whereis、grep)

  • find

    • 所在路径:/bin/find
    • 执行权限:所有用户
    • 功能描述:查找文件
    • 语法:find 【查找范围】【匹配条件】
      • -name 按名字查找
        • *:匹配所有字符。test*:匹配所有以test开头的。
        • ?:匹配单个字符。test???:匹配所有以test开头且之后必须有也仅有三个字符。
          如:find /etc -name test.c
      • -iname:与-name一样按名字查找,但忽略大小写。
      • -size:按文件大小查找。
        • 单位为一个数据块=512B=0.5kB。
        • +n:大于n数据块。
        • -n:小于n数据块
        • =n:等于n数据块。(很少用)
      • -user:按照用户名查找。
      • -group: 按照所属组查找。
      • -amin:访问时间access。
      • -cmin:最近多少分钟内,文件属性被修改。也就是ls -l中显示的跟该文件或者目录相关的属性。

        如find /etc -cmin -5
        查找/etc下最近五分钟内被修改过属性的文件或者目录。

      • -mmin:文件内容modify。也就是最近多少分钟内,文件内容被修改。
      • 查找条件有多个时。
        • -a :前后两者都满足。
        • -o: 前后两者至少有一个满足。
          如:find /etc -size +155 -a -size -300
      • -exec/-ok:

        find /etc -name init -exec ls -l {} ;
        find /etc -name init执行完后,得到的结果立马执行ls -l。注意ls -l {} ;之间的空格。{} \;是固定格式。
        -ok与-exec只有一个区别,也就是执行操作时,会有个提示信息。

      • -type:按类型查找。
        • f:文件。
        • d:目录。
        • l:软链接文件。
        • 如:find /etc -type f
          在/etc下查找所有文件。
      • -inum:根据i节点查找。

        i节点也就是通过ls -i 显示的文件名前的数字。
        通过i节点删除文件的例子

  • locate

    • 所在路径:/usr/bin/locate
    • 执行权限:所有用户
    • 功能描述:在文件资料库中查找文件。
    • 语法:locate 【-i】文件名。
    • -i :不区分大小写
    • 特点:
      • 它与windows中的everything很像。也是先建立一个对系统大部分文件建立一个索引库,然后直接在这个索引库中查找,才会这么快。
      • 如果新建一个文件,文件资料库没法这么快更新,需要使用updatedb更新文件资料库,然后查找。
      • 有许多文件,locate不会收录进它的文件资料库,比如/tmp中存放的临时文件。
      • locate作为查找不会特别靠谱,但非常快,查找常用的系统配置文件等,还是很好用的。真要完整的靠谱的查找,还是得find,不过find消耗资源太大,速度慢了点。
  • which

    • 所在路径:/usr/bin/which
    • 执行权限:所有用户。
    • 功能描述:搜索命令所在绝对路径以及别名信息。
    • 语法:which 命令名
      在这里插入图片描述
  • whereis

    • 所在路径:/usr/bin/whereis
    • 执行权限:所有用户
    • 功能描述:查找命令所在绝对路径以及配套的man文档所在绝对路径
    • 语法:whereis 命令名
  • grep(文件内容搜索命令)

    • 所在路径:/bin/grep
    • 执行权限:所有用户
    • 功能描述:在文件中搜索匹配的行,并输出。
    • 语法:grep 【-iv】 文件
      • -i :搜索时,不区分大小写。
      • -v:排除包含该字符串的行。
    • 例子:grep -v # /etc/init
      在/etc/init文件中查找没有#的行,也就是非注释行,并输出。
      由于注释不一定写在行头,也可以写在行位,通过这种方法会过滤掉一些非注释行。于是可以:grep -v ^# /etc/init
      其中^表示行首,整句命令的意义也就是只排除以#开头的行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章