Linux文件查找相关命令
2023-07-19 本文已影响0人
david161
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)