linux之文件查找总结

        在做运维相关的事情时,我们少不了要查这样那样的文件,一般来说我们可能会查比如带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之文件查找总结)