美文网首页
Linux文件查找相关命令

Linux文件查找相关命令

作者: david161 | 来源:发表于2023-07-19 09:08 被阅读0次

    grep命令

    grep命令是非常重要的命令,可以对文本进行查找和搜索 ,grep是Global Regular Expression Print(全局正则表达式搜索)的缩写。

    ps -ef | grep svn 查找指定进程
    ps -ef | grep svn -c 查找指定进程个数

    常用参数如下:

    -a  #不要忽略二进制数据
    -A  #除了显示符合范本样式的那一行之外,并显示该行之后的内容
    -b  #在显示符合范本样式的那一行之外,并显示该行之前的内容
    -B  #除了显示符合样式的那一行之外,并显示该行之前的内容
    -c  #计算符合范本样式的列数
    -C  #除了显示符合范本样式的那一列之外,并显示该列之前后的内容
    -d  #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作
    -e  #指定字符串作为查找文件内容的范本样式
    -E  #将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式
    -f  #指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式
    -F  #将范本样式视为固定字符串的列表
    -G  #将范本样式视为普通的表示法来使用
    -h  #在显示符合范本样式的那一列之前,不标示该列所属的文件名称
    -H  #在显示符合范本样式的那一列之前,标示该列的文件名称
    -i  #忽略字符大小写的差别
    -l  #列出文件内容符合指定的范本样式的文件名称
    -L  #列出文件内容不符合指定的范本样式的文件名称
    -n  #在显示符合范本样式的那一列之前,标示出该列的编号
    -q  #不显示任何信息
    -R/-r #此参数的效果和指定“-d recurse”参数相同
    -s  #不显示错误信息
    -v  #反转查找
    -V  #显示版本信息   
    -w  #只显示全字符合的列
    -x  #只显示全列符合的列
    -y  #此参数效果跟“-i”相同
    -o  #只输出文件中匹配到的部分
    正则表达式
    ^  #匹配以XX开头的行
    $  #匹配以XX结尾的行
    

    常用示例:

    # 在多个文件中查找:
    grep "file" file_1 file_2 file_3 
    
    # 输出除之外的所有行 -v 选项:
    grep -v "file" file_name
    
    # 标记匹配颜色 --color=auto 选项:
    grep "file" file_name --color=auto
    
    # 使用正则表达式 -E 选项:
    grep -E "[1-9]+"
    egrep "[1-9]+"
    
    # 只输出文件中匹配到的部分 -o 选项:
    echo this is a test line. | grep -o -E "[a-z]+\."
    line.
    
    echo this is a test line. | egrep -o "[a-z]+\."
    line.
    
    # 统计文件或者文本中包含匹配字符串的行数-c 选项:
    grep -c "text" file_name
    2
    
    # 输出包含匹配字符串的行数 -n 选项:
    grep "text" -n file_name
    或
    cat file_name | grep "text" -n
    
    # 多个文件
    grep "text" -n file_1 file_2
    
    # 搜索多个文件并查找匹配文本在哪些文件中:
    grep -l "text" file1 file2 file3...
    
    # grep递归搜索文件,在多级目录中对文本进行递归搜索:
    grep "text" . -r -n
    
    # 忽略匹配样式中的字符大小写:
    echo "hello world" | grep -i "HELLO"
    hello
    
    # 选项 -e 指定多个匹配样式:
    echo this is a text line | grep -e "is" -e "line" -o
    is
    line
    
    # 也可以使用 **-f** 选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。
    cat patfile
    aaa
    bbb
    echo aaa bbb ccc ddd eee | grep -f patfile -o  
    
    # 在grep搜索结果中包括或者排除指定文件:只在目录中所有的.php和.html文件中递归搜索字符"main()"
    grep "main()" . -r --include *.{php,html}   
    
    # 在搜索结果中排除所有README文件
    grep "main()" . -r --exclude "README"  
    
    # 在搜索结果中排除filelist文件列表里的文件
    grep "main()" . -r --exclude-from filelist  
    

    which命令

    which,whereis,locate命令
    这三个命令都用于搜索文件路径,使用示例

    locate *.ps        寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 
    whereis halt      显示一个二进制文件、源码或man的位置 
    which halt         显示一个二进制文件或可执行文件的完整路径 
    

    which命令用于用户查找命令所有路径,这里显示的时绝对路径。同时which命令也可以看到某个系统命令是否存在。
    语法格式

    which [options] [--] programname [...]
    

    选项说明

    -a  #打印每个匹配文件名的所有匹配路径名
    -V  #打印版本信息
    

    退出状态说明

    0 #找到了所有文件名,所有文件都是可执行的
    1 #找不到一个或多个文件名,或者文件名不可执行
    2 #指定的选项无效
    

    应用举例

    # 搜索ls
    [root@localhost sysconfig]# which ls
    alias ls='ls --color=auto'
        /usr/bin/ls
    
    [root@centos7 ~]# which which
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
     /usr/bin/alias
     /usr/bin/which
    [root@centos7 ~]# which ls
    alias ls='ls --color=auto'
     /usr/bin/ls
    [root@centos7 ~]# which pwd
    /usr/bin/pwd
    [root@centos7 ~]# which rz
    /usr/bin/rz
    [root@centos7 ~]# which ifconfig
    /usr/sbin/ifconfig
    

    whereis命令

    whereis命令相对于which命令,whereis命令搜索的范围更大,它可以查找二进制程序、代码相关文件路径。
    和find命令命令比,whereis查找非常快,因为Linux将系统里所有文件记录在一个数据库文件中,whereis是直接从数据库文件中查找。而find命令是遍历硬盘来查找,所以whereis会比find快。
    语法格式

    whereis [ OPTIONS ] file name...
    

    选项说明

    -b  #只查找二进制文件
    -B<目录>  #只在指定的目录下查找二进制文件
    -f  #不显示文件名前的路径名称
    -m  #只查找说明文件
    -M<目录>  #只在指定的目录下查找说明文件
    -s  #只查找原始代码文件
    -S<目录>  #只在指定的目录下查找原始代码文件
    -u  #查找不包含指定类型的文件
    

    应用举例

    #将相关的所有文件都查找出来
    [root@centos7 ~]# whereis ifconfig
    ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
    [root@centos7 ~]# whereis top
    top: /usr/bin/top /usr/share/man/man1/top.1.gz
    
    #只将二进制文件查找出来
    [root@centos7 ~]# whereis -b ifconfig
    ifconfig: /usr/sbin/ifconfig
    [root@centos7 ~]# whereis -b top
    top: /usr/bin/top
    

    locate命令

    locate命令的搜索不特定于命令或者软件包,而是能够找到任何类型的文件。如果没有该命令的话,需要通过apt-get install locate或者yum install locate命令安装。

    file命令

    file命令用于获取文件属性,查看指定文件的类型。
    这里再回顾一下linux的文件类型:

    普通文件   #属性信息表示为 - 
    目录文件   #属性信息表示为 d
    链接文件   #属性信息表示为 l
    套接字文件   #属性信息表示为 s
    字符设备文件   #属性信息表示为 b
    块设备文件    #属性信息表示为 c
    管道文件   #属性信息表示为 p
    

    命令格式

    file [选项] [文件名或目录名]
    

    选项说明

    -b:#列出结果,但不显示文件名称
    -c:#详细显示指令执行过程
    -L:#显示链接文件的源文件类型
    -m<魔法数字文件>:#指定魔法数字文件
    -v:#打印出版本信息
    -z:#查看压缩文件的内容
    

    应用示例

    [root@localhost sysconfig]# file sshd
    sshd: ASCII text
    
    #查看文件类型
    [root@centos7 testdir]# file cp
    cp: symbolic link to `/usr/bin/cp`
    [root@centos7 testdir]# file dir
    dir: directory
    [root@centos7 testdir]# file test2.txt
    test2.txt: empty
    [root@centos7 testdir]# file test2.txt~
    test2.txt~: empty
    
    #直接显示结果,不显示文件名
    [root@centos7 testdir]# file -b dir
    directory
    
    #解读压缩文件的内容
    [root@centos7 ~]# file -z httpd-2.4.46.tar.gz
    httpd-2.4.46.tar.gz: POSIX tar archive (GNU) (gzip compressed data, was "httpd-2.4.46.tar", from Unix, last modified: Sat Aug  1 10:12:01 2020, max compression)
    

    相关文章

      网友评论

          本文标题:Linux文件查找相关命令

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