linux 文件查找或字符串
基本上相当于 linux下的 “搜索” , 相当于windows下的搜索功能!它是用来搜索文件的。
·
find和grep和区别
- find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。基本上相当于 linux下的 “搜索” , 相当于windows下的搜索功能! 它是用来搜索文件的。
- grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。grep是用来搜索文本的, 用来在standard input或文件内部的内容中, 来搜索文字 内容的!
- which 查看可执行文件的位置 ,只有设置了环境变量的程序才可以用。
#查找Java的位置 which java
- whereis 寻找特定文件,只能用于查找二进制文件、源代码文件和man手册页。
- locate 配合数据库查看文件位置 ,详情:locate -h查看帮助信息。
- find 是完全匹配(通配符),而grep是包含匹配(正则表达式)
1.字符串查找
1.1.grep 查找命令
grep 用于筛选信息。
1.1参数说明
参数 | 说明 |
-a 或 --text | 不要忽略二进制的数据。 |
-A<显示行数> 或 --after-context=<显示行数> | 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 |
-b 或 --byte-offset | 在显示符合样式的那一行之前,标示出该行第一个字符的编号。 |
-B<显示行数> 或 --before-context=<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前的内容。 |
-c 或 --count | 计算符合样式的列数。 |
-C<显示行数> 或 --context=<显示行数>或-<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前后的内容。 |
-d <动作> 或 --directories=<动作> | 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。 |
-e<范本样式> 或 --regexp=<范本样式> | 指定字符串做为查找文件内容的样式。 |
-E 或 --extended-regexp | 将样式为延伸的正则表达式来使用。 |
-f<规则文件> 或 --file=<规则文件> | 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。 |
-F 或 --fixed-regexp | 将样式视为固定字符串的列表。 |
-G 或 --basic-regexp | 将样式视为普通的表示法来使用。 |
-h 或 --no-filename | 在显示符合样式的那一行之前,不标示该行所属的文件名称。 |
-H 或 --with-filename | 在显示符合样式的那一行之前,表示该行所属的文件名称。 |
-i 或 --ignore-case | 忽略字符大小写的差别。 |
-l 或 --file-with-matches | 列出文件内容符合指定的样式的文件名称。 |
-L 或 --files-without-match | 列出文件内容不符合指定的样式的文件名称。 |
-n 或 --line-number | 在显示符合样式的那一行之前,标示出该行的列数编号。 |
-o 或 --only-matching | 只显示匹配PATTERN部分。 |
-q 或 --quiet或--silent | 不显示任何信息。 |
-r 或 --recursive | 此参数的效果和指定"-drecurse"参数相同。 |
-s 或 --no-messages | 不显示错误信息。 |
-v 或 --invert-match | 显示不包含匹配文本的所有行。 |
-V 或 --version | 显示版本信息。 |
-w 或 --word-regexp | 只显示全字符合的列。 |
-x--line-regexp | 只显示全列符合的列。 |
-y | 此参数的效果和指定"-i"参数相同。 |
grep test *file #查找后缀有 file 字样的文件中包含 test 字符串的文件
grep -r update /etc/acpi #查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容
grep -v test *test* #反向查找,查找文件名中包含 test 的文件中不包含test 的行
grep –i "test" *.log #查找不区分大小写
1.2 cat 显示命令
参数 | 说明 |
-n 或 --number | 由 1 开始对所有输出的行数编号 |
-A, --show-all | 查看换行符 |
cat -A test.txt #查看换行符
1.3 wc 统计命令
统计文件的字数、行数、字节数。
参数 | 说明 |
-c | 统计文件的字节数(bytes) |
-l | 统计文件的行数 |
-w | 统计文件中单词的格式,默认以空白字符作为分隔符。 |
grep "none" |awk -F ':' '{print $2}'|wc -l #查找none并且将字符用‘:’拆分,统计个数
1.4 awk 截取列信息
参数 | 说明 |
-F fs | 指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格或制表符。 |
-f file | 从脚本文件中读取 awk 脚本指令,以取代直接在命令行中输入指令。 |
-v var=val | 在执行处理过程之前,设置一个变量 var,并给其设备初始值为 val |
awk 使用数据字段变量($)
- $0 代表整个文本行;
- $1 代表文本行中的第 1 个数据字段;
- $2 代表文本行中的第 2 个数据字段;
- $n 代表文本行中的第 n 个数据字段
echo "My name is Rich" | awk '{$4="Christine"; print $0}'
docker rmi $(docker images --format "{{.Repository}}:{{.ID}}" | grep "none" |awk -F ':' '{print $2}')
1.5 cut 截取字符串信息
参数 说明
-b 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c 以字符为单位进行分割。
-d 自定义分隔符,默认为制表符。
-f 与-d一起使用,指定显示哪个区域。
-n 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除
awk '{print $1}'|cut -d "/" -f 2
1.6 sed(流式编辑器)
sed主要用来修改文件
p : 打印
d : 删除
a : 在当前行后添加一行或多行内容
c : 用新文件修改(替换)当前行中的文本
i : 在当前行之前插入文本
r : 从以外文件中读相关内容,写到相关行之后
w : 匹配到的行写入一个新的文件之中
y : 将字符转换成一个新的字符
s : 用一个字符替整体替换成另外一个字符
g : 全局执行
i : 与s指令配合一起使用时,则是忽略大小写的作用
1.7 sort排序命令
参数 | 说明 |
-t | 分隔符 :指定排序时使用的分隔符; |
-k | 指定需要排序的列; |
-n | 按照数值大小进行排序; |
-r | 以相反的顺序排序; |
-b | 忽略排序字段或关键字中开头的空格; |
-c | 检查待排序内容是否已排序,如果未排序,则输出最开始乱序的列,否则,没有输出; |
-o FILE | 将排序结果输出到指定文件,而不是标准输出; |
cat 2.txt | sort #默认按第一个字符排序
cat 2.txt | sort -n # 按数值进行排序
cat 2.txt | sort -r #默认按第一个字符进行倒序
cat 2.txt | sort -n -r -k2 #指定第几列排序
1.8 uniq去重命令
用于检查以及删除文本文件中重复出现的行列。相邻重复的去重,不相邻不去重。要想全部去重,需要先排序,所以一般uniq都与sort连用。
1.9 tr替换或删除命令
2.文件查找
2.1 find:在目录中查找文件.
find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。
2.1.1命令格式
find 搜索路径 [选项] 搜索内容
find 是比较特殊的命令,它有两个参数:
- 第一个参数用来指定搜索路径;
- 第二个参数用来指定搜索内容。
find命令的选项比较复杂,包含按照文件名搜索,按照文件大小搜索,按照修改时间搜索,按照权限搜索,按照所有者和所属组搜索,按照文件类型搜索,逻辑运算符。
参考:
2.1.2 按文件名查找
find / -name "docker"
更多推荐
已为社区贡献1条内容
所有评论(0)