美文网首页
linux之文件查找总结

linux之文件查找总结

作者: WinkTink | 来源:发表于2020-12-15 19:01 被阅读0次

            在做运维相关的事情时,我们少不了要查这样那样的文件,一般来说我们可能会查比如带xxx.conf名字的文件在哪呢,查日志啊,某个可执行文件的位置啊。因此本篇我们主要讲解一下一些比较常用的命令。

    1. 概览

    which : 查看执行文件的位置。

    whereis : 查看可执行文件位置和相关文件。

    locate : 配合数据库缓存,快速查看文件的位置。

    grep : 过滤匹配,他是一个文件搜索工具。

    find  :  可以根据条件查看文件。

    2.  命令:which  查看执行文件的位置

    说明:查看执行文件的位置

    语法:    which 参数  查询目标

     常用命令:

    一般不加参数使用

                  --all, -a      显示所有的匹配路径

     操作:

    3. 命令 whereis 查看可执行文件位置和相关文件

     命令:   whereis

     语法:   whereis 参数 查询目标

     常用命令: 

                   一般不加参数使用

        -b          只搜索二进制文件

         -B <目录>  定义二进制文件查找路径

         -m         只搜索 man 手册

         -M <目录>  定义 man 手册查找路径

         -s         只搜索源代码

         -S <目录>  定义源代码查找路径

     操作:

    4. 命令 locate 配合数据库缓存,快速查看文件的位置。

     命令:   locate

     语法:   locate  文件名

     常用参数: 

                    无

      操作:

            locate和find命令功能差不多,但是搜索效率更高,因为locate查的是数据库而find查找的    是目录文件。

      数据库:

     ls /var/lib/mlocate/mlocate.db

    /var/lib/mlocate/mlocate.db

    相关配置文件:

    ➜  ~ ls /etc/updatedb.conf

    /etc/updatedb.conf

    相关定时任务:

    ➜  ~ ls /etc/cron.daily/mlocate

    /etc/cron.daily/mlocate

    举例:

    ➜  ~ touch shafa

    ➜  ~ locate shafa

    ➜  ~ updatedb

    ➜  ~ locate shafa

    /root/shafa

    注:如果我们当天新建的文件查找,需要手动updatedb。

    5. 命令 grep 过滤匹配,他是一个文件搜索工具

    命令:  grep

    语法:  grep 参数  目标值  文件

    常用参数:  

                 -v         取反

                 -i          忽略大小写

                 -n         输出的同时打印行号

                 ^*         以*开头                 

                 *$         以*结尾 

                 ^$         空行 

    操作:

    查 /etc/passwd有root的行

    ➜  ~ grep root /etc/passwd

    root:x:0:0:root:/root:/bin/zsh

    operator:x:11:0:operator:/root:/sbin/nologin

    查 /etc/passwd 没有root的行(内容较多,禁展示几行)

    ➜  ~ grep -v root /etc/passwd

    bin:x:1:1:bin:/bin:/sbin/nologin

    daemon:x:2:2:daemon:/sbin:/sbin/nologin

    adm:x:3:4:adm:/var/adm:/sbin/nologin

    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

    sync:x:5:0:sync:/sbin:/bin/sync

    查 /etc/passwd 有www的行并显示行号

    ➜  ~ grep -n www /etc/passwd

    23:www:x:1000:1000::/home/www:/sbin/nologin

    6. 命令 find  可以根据条件查看文件

    命令:  find

    语法:  find 路径  参数 输出

    常用参数: 

    路径: 例如用 . 来表示当前目录,用 / 来表示系统根目录。

        -print: 显示的时候”\n”做为定界符, 换行

        -print0:与xargs配套使用,以“\0”做为定界符

    find常用命令选项:

        -name 按照文件名查找文件。“名称”

        -iname 按照文件名查找文件。“名称”

        -perm 按照文件权限来查找文件。666 777 等

        -depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找

        -user 按照文件属主来查找文件

         -atime  -ctime (单位是天)

        -mmin -cmin  -amin(单位是分钟)

        -size n [c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计

         -follow  如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

    查看当前目录下test.开头的文件,输出结果换行显示(默认)

    ➜  ~ find . -name "test*" -print

    ./test.txt

    ./autojump/tests

    ./test.1

    查看当前目录下test.开头的文件,输出结果不换行显示

    ➜  ~ find . -name "test*" -print0

    ./test.txt./autojump/tests./test.1

    对查找的内容执行相应命令

    默认执行动作 : -print

    常用动作:  

                      -exec  这个参数后可以跟自定义shell命令

    操作:

    查询.txt结尾的文件并用ls查询其更多属性

    ➜test find . -name "*.txt" -exec ls -l {} \;

    -rw-r--r-- 1 root root 0 11月  4 14:56 ./xq1.txt

    -rw-r--r-- 1 root root 0 11月  4 14:56 ./xq.txt

    -rw-r--r-- 1 root root 0 11月  4 14:56 ./xq2.txt

    查询.txt结尾的文件并变成.bak结尾的文件

    ➜test find . -name "*.txt" -exec mv {} {}.bak \;

    ➜test ls

    xq1.txt.bak xq2.txt.bak xq.txt.bak

    逻辑查询:

                -a  并且

    -o  或者

                 +  高于

                 -   低于

    操作:

     查看 .sh或者.q结尾的文件。

    ➜  test find . -name "*.sh" -o -name "*.q"

    ./book.q

    ./stop.sh

    ./start.sh

    查看.sh结尾并且s开头的文件。

    ➜  test find . -name "*.sh" -a -name "s*"

    ./stop.sh

    ./start.sh

    在文件中插入内容后查看。

    ➜test ll

    总用量 12K

    -rw-r--r-- 1 root root 9 11月  4 15:10 book.q

    -rw-r--r-- 1 root root 13 11月  4 15:10 start.sh

    -rw-r--r-- 1 root root 4 11月  4 15:10 stop.sh

    -rw-r--r-- 1 root root 0 11月  4 14:56 xq1.txt.bak

    -rw-r--r-- 1 root root 0 11月  4 14:56 xq2.txt.bak

    -rw-r--r-- 1 root root 0 11月  4 14:56 xq.txt.bak

    查看/etc 大于40k小于50k的文件

    ➜  test find /etc/ -size +40k -a -size  -50k

    /etc/selinux/targeted/active/modules/100/sysadm/hll

    /etc/selinux/targeted/contexts/files/file_contexts.homedirs.bin

    相关文章

      网友评论

          本文标题:linux之文件查找总结

          本文链接:https://www.haomeiwen.com/subject/rorbwctx.html