find和grep和区别

  1. find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。基本上相当于 linux下的 “搜索” , 相当于windows下的搜索功能! 它是用来搜索文件的。
  2. grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。grep是用来搜索文本的, 用来在standard input或文件内部的内容中, 来搜索文字 内容的!
  3. which 查看可执行文件的位置 ,只有设置了环境变量的程序才可以用。 
    #查找Java的位置
    which java
  4. whereis 寻找特定文件,只能用于查找二进制文件、源代码文件和man手册页。                    
  5. locate 配合数据库查看文件位置 ,详情:locate -h查看帮助信息。
  6. 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"

​​​​​​​

linux字符处理命令wc cat grep sed - 孙龙-程序员 - 博客园

linux基础之字符处理命令 - 90啊 - 博客园

Linux find命令:在目录中查找文件(超详解)

Logo

更多推荐