zoukankan      html  css  js  c++  java
  • 搜索之locate与find

    一、locate:(非实时查找)模糊搜索,搜索速度极快

      查找逻辑:查询系统上预建的文件索引数据库/var/lib/mlocate/mlocate.db。索引构建时系统空闲时自动进行创建的,周期性任务。updatedb来手动更新索引,但是会很耗资源。

        -i  忽略大小写

        -n 只搜索前n个就停止了

        -r 支持正则表达式     locate -r ".sh$"  (注意" "号必须加)

    二、find:(实时查找)精确搜索,默认为本目录,自动递归。

        ①、指定目录深度

          -maxdepth level(第一级就是本级)先浅再深

          -mindepth level (默认为1级)    先浅再深

          -depth      (先处理深目录,然后深目录中的文件,再浅目录,然后浅目录的文件)

        ②、-name (支持匹配符)精确查找:find -name hello.sh    大约查找:find -name "*.txt"(注意" "必须加)

          -iname  忽略大小写

          -inum n  按inode搜索

          -samefile name 超相同的inode(就是找硬链接)

          -links n  链接数为n的文件

          -regex  正则表达式(必须前路径)  find -regex ".*.txt$"

        ③、-user USERNAME :查找属主为指定用户的文件

          -group GRPNAME

          -uid  USERID

          -gid  GROUPID

          -nouser

          -nogroup

        ④、-type TYPE

          TYPE可以是:b、c、f、d、p、s、l

        ⑤、-empty (文件夹为空)

           只搜索空文件夹:find -empty -type d

        ⑥、组合条件:

          -a  与(默认两个条件间就是与的关系)

          -o  或    find ( -user wang -o -user li )  -ls 会显现wang和li的详细信息     find -user wang -o -user li -ls 只会显示li的详细信息

          !/-not 非

        ⑦、-prune 剪切

          find /etc/ -path ‘/etc/sane.d’ -a -prune -o -name "*.conf"

          find /etc ( -path "/etc/sane.d" -o -path "/etc/fonts" )  -a -prune -o -name "*.conf"

        ⑧、根据文件大小

          -size [+|-] kMGc(字节)

          规则:6k:(5k,6k]

             +6k:(6k,+无穷)

             -6k:(0,5k]

             2048c:(2047c,2048c]=2048c

        ⑨、以天为单位

          -atime [+|-] n

          规则:10:[10,11)

             +10:[11,+无穷]

             -10:(10天以内)

          -mtime

          -ctime

          以分钟为单位

          -amin

          -mmin

          -cmin

        ⑩、以权限查找 -perm

          -perm [/|-] 权限  /:或    -:与

          022  精确的022权限

          -220 属主与属组都为w,其他用户我不管

          /220 属主与属组有一个为w,其他用户我不管

          /700 属组与其他用户我不管,属组中的权限也是或的关系,有一个就可以。   

        ⑪、多余动作处理:

          -print  (默认就已经将结果打印在屏幕了)

          -print0 与xargs -0联用,专门处理“a b”.txt这种特殊文件。(print0在每个结果后加1个空字符,xargs -0以空位分割符)

          -ls

          -fls file(将以ls显示的格式保存在file中)<==> -ls >file

          -ok 命令 {} ; (每个找出的结果都会询问)

          -exec 命令 {} ;(不会询问⑬) 不支持丰富的用法,建议使用xargs

         ⑫、xargs:功能强大,专门处理后面只跟参数的命令。将接受的内容作为后面命令的参数。

           seq 10 |xargs  (默认将换行变为空格)

           find -name "*.sh" |xargs ls -lS (按大小排序)

           echo {1..10}|xargs -n1 (一行一个)  echo {1..10} |xargs -n1 useradd

           echo {1..10}|xargs -n2 (一行两个)

           seq 10 |xargs -i echo "https:n={}"  (-i使{}指定前面的输出,会一行行处理,类似于循环10次)

              echo {1..10}|xargs -n1 -i echo "https"n={}"  (达不到我们想要的结果,不要用这种方法)

    案例:一、you-get可以下载视频。需要安装python3-pip。

                 然后pip3 install you-get。

         you-get 视频地址 -P n  (-P采用多线程,使下载速度更快。但是线程用的太大会使网站认为你在攻击它,就把你屏蔽了)

           二、下载文件

          ①、安装httpd,进入/var/www/html。自己建立一些文件for i in {1..30};do echo Page$i >test$i.html;done

          ②、systemctl start httpd

          ③、自己去浏览器看自己写的内容

          ④、下载:seq 30 |xargs -i wget -P /data/test http://10.0.0.105/test{}.html

  • 相关阅读:
    tree-cli 自动生成项目目录结构
    按需导入vant-ui
    全局导入vant-ui
    mook使用流程
    axios使用流程
    Vuex使用流程
    vue-router使用流程
    img的complete和onload
    react-redux 如何在子组件里访问store对象
    ES6中的Export/import操作的是引用
  • 原文地址:https://www.cnblogs.com/ldyaly/p/12776205.html
Copyright © 2011-2022 走看看