一、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