文本内容管理和文件查找
1、文本内容管理命令
1.1 文本内容查看
cat命令 拼接文件内容并输出至标准输出
# cat EOF
[root@jlin ~]# cat > test <<EOF
> test1
> JLin
> QingYu
> EOF
[root@jlin ~]# cat test
test1
JLin
QingYu
-n #显示行号
// 示例
[root@jlin ~]# cat initial-setup-ks.cfg
#version=DEVEL
# X Window System configuration information
xconfig --startxonboot
# License agreement
eula --agreed
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
[root@jlin ~]# cat -n initial-setup-ks.cfg
1 #version=DEVEL
2 # X Window System configuration information
3 xconfig --startxonboot
4 # License agreement
5 eula --agreed
6 # System authorization information
7 auth --enableshadow --passalgo=sha512
8 # Use CDROM installation media
9 cdrom
10 # Use graphical install
more命令 全屏查看文件内容,只能从前往后,不能从后往前;文件内容显示完后自动退出
// 示例
[root@jlin ~]# more initial-setup-ks.cfg
#version=DEVEL
# X Window System configuration information
xconfig --startxonboot
# License agreement
eula --agreed
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
--More--(19%)
less命令 全屏查看文本文件内容,可以从前往后也可以从后往前
/ #查找字符
n #查找下一个
N #查找上一个
b #上一页
空格 #下一页
// 示例
[root@jlin ~]# less initial-setup-ks.cfg
network --bootproto=dhcp --device=ens34 --onboot=off --ipv6=auto --activate
network --hostname=localhost.localdomain
initial-setup-ks.cfg
head命令 从头部开始打印文件内容,默认打印10行
-n #指定打印的行数,可以是负数
// 示例
[root@jlin ~]# head initial-setup-ks.cfg
#version=DEVEL
# X Window System configuration information
xconfig --startxonboot
# License agreement
eula --agreed
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
[root@jlin ~]# head -n3 initial-setup-ks.cfg
#version=DEVEL
# X Window System configuration information
xconfig --startxonboot
tail命令 从尾部开始打印文件内容,默认打印10行
-n #指定打印的行数,可以是负数
head -15 | tail -1 #取出前十五行后看最后一行,查看第十五行的内容
// 示例
[root@jlin ~]# tail initial-setup-ks.cfg
%end
%addon com_redhat_kdump --enable --reserve-mb=auto
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@jlin ~]# head -15 | tail -1 initial-setup-ks.cfg
%end
1.2 文本内容排序
sort #默认升序排序,不是按数值大小排序的
‐n #根据数值大小进行排序
‐r #逆序排序
‐t #字段分隔符
‐k #以哪个字段为关键字进行排序
‐u #去重,排序后相同的行只显示一次
‐f #排序时忽略字符大小写
uniq //报告重复的行(连续且完全相同方为重复)
‐c //显示文件中行重复的次数
‐d //只显示重复的行
‐u //只显示未重复的行
1.3 文本内容统计
wc(word count)
‐c #显示字节数
‐l #显示行数
‐w #显示单词数
// 大小统计
du #查看文件或目录占用的磁盘空间大小
‐h #以人类友好的方式显示大小
‐s #显示总的占用空间大小
df #报告文件系统磁盘空间使用情况
‐h #以人类友好的方式显示大小
‐i #显示inode信息
1.4 文本内容过滤
cut #截取文本内容
cut OPTION... [FILE]...
‐d #指定字段分隔符,默认是空格
‐f #指定要显示的字段
‐f 1,3 显示第1个字段和第3个字段
‐f 1‐3 显示第1个字段到第3个字段
awk #基于列的文本报告工具
‐F'' #选择分隔符;分隔符用单引号引起来
'/root/' #匹配关键字root的行
'{print $#}' #选择打印第#列
'NR==#{print $#}' #选择打印第几行第几列
sed #基于行的过滤和转换文本的流编辑器
‐i #修改文件内容
sed ‐i 's/原字符串/新字符串/' file
#字符串替换原字符串,只替换每行第一个匹配到的字符
sed ‐i 's/原字符串/新字符串/g' file
#字符串替换原字符串,替换正行所有匹配到的字符串
grep egrep fgrep #文本内容查找
grep #根据模式搜索文本内容,并将符合模式的内容行显示出来。
#使用基本正则表达式定义的模式来过滤文本的命令。
Pattern(模式) #文本字符和正则表达式的元字符组合而成的匹配条件
‐i #忽略大小写
‐‐color #匹配到的内容高亮显示
‐v #显示没有被模式匹配到的行
‐o #只显示被模式匹配到的字符串
‐E #使用扩展正则表达式。grep ‐E相当于使用egrep
‐q #静默模式,不输出任何信息
‐A1 #被模式匹配到的内容以及其后面一行的内容都显示出来,
#如果把1改成2就表示被模式匹配到的内容以及其后面2行的内容均显示出来
‐B1 #被模式匹配到的内容以及其前面一行的内容都显示出来,
‐C1 #被模式匹配到的内容以及其前后的行各显示1行
fgrep #不支持正则表达式,执行速度快
2、文件查找命令
find
// 实时查找,精确性强,遍历指定目录中所有文件完成查找
// 查找速度慢,支持众多查找标准
// 语法:find [OPTION...] 查找路径 查找标准 查找到以后的处理动作
查找路径 //默认为当前目录
查找标准 //默认为指定路径下的所有文件
‐name 'filename' #对文件名作精确匹配.支持glob通配符机制
‐iname 'filename' #文件名匹配时不区分大小写
‐regex pattern #基于正则表达式进行文件名匹配.以pattern
#匹配整个文件路径字符串,而不仅仅是文件名称
‐user username #根本属主来查找
‐group groupname #根据属组来查找
‐uid #根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
‐gid #根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
‐nouser #查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
‐nogroup #查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
‐type #根据文件类型来查找(f,d,c,b,l,p,s)
‐size #根据文件大小进行查找。如1k、1M,+10k、+10M,‐1k、‐1M, +表示大于,‐表示小于
[+|‐]
#K、#M、#G
#Unit表示(从#‐1到#之间的范围大小)
‐#Unit表示(从0到#‐1的范围大小)
+#Unit表示(大于#的所有)
‐mtime #修改时间
‐ctime #改变时间
‐atime //访问时间
+5 //5天前
‐5 //5天以内
‐mmin #多少分钟修改过
‐cmin #多少分钟改变过
‐amin #多少分钟访问过
+5 //5分钟前
‐5 //5分钟以内
‐perm mode #根据权限精确查找
‐perm ‐mode #文件权限能完全包含此mode时才符合条件
‐perm /mode #9位权限中有任何一位权限匹配都视为符合查找条件
// 组合条件:
‐a
‐o
‐not
!
例:
!A ‐a !B = !(A ‐o B)
!A ‐o !B = !(A ‐a B)
// 处理动作:默认为显示到屏幕上
‐print #显示
‐ls #类似ls ‐l的形式显示每一个文件的详细信息
‐delete #删除查找到的文件
‐fls /path/to/somefile #查找到的所有文件的长格式信息保存至指定文件中
‐ok COMMAND {} \; #对查找到的每个文件执行COMMAND,每次操作都需要用户确认
‐exec COMMAND {} \; #对查找到的每个文件执行COMMAND,操作不需要确认
// 注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令,而有些命令不能接受过多参数,此时命令执行可能会失败。而xargs可规避此问题。
xargs #通过管道将查找到的内容给xargs处理,xargs后面直接跟命令即可