文本内容管理和文件查找
1、文本内容管理命令
1.1 文本内容查看
cat //将文件内容并输出至标准输出(屏幕)
-n //显示行号
注意:使用cat查看文件内容时会将文件的所有内容加载至内存,
所以应避免使用cat打开巨大文件
tac //倒序打印文件内容至标准输出
more //全屏查看文本文件内容,只能从前往后,不能从后往前。
//文件内容显示完后自动退出
less //全屏查看文本文件内容,可从前往后亦可从后往前。推荐使用
head //从头部开始打印文件内容,默认打印10行
-n //指定要打印的行数,-n 可以是15也可以是-15
tail //查看文本文件尾部内容
-n //指定要打印的行数,可以是-n 15也可以是-15
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 //搜索文本内容,并将匹配的内容所在一整行都显示出来。
//grep是可以使用正则表达式来过滤文本的命令。
-i //忽略大小写
--color //匹配到的内容高亮显示
-w //强制模式,完全匹配字词
-n //显示匹配到的内容的行号
-v //显示没有被模式匹配到的行
-o //只显示被模式匹配到的字符串
-E //使用扩展正则表达式。grep -E相当于使用egrep
-q //静默模式,不向屏幕输出任何信息
-A 1 //被模式匹配到的内容以及其后面一行的内容都显示出来,
//如果把1改成2就表示被模式匹配到的内容以及其后面2行的内容均显示出来
-B 1 //被模式匹配到的内容以及其前面一行的内容都显示出来,
//如果把1改成2就表示被模式匹配到的内容以及其前面2行的内容均显示出来
-C 1 //被模式匹配到的内容以及其前后的行各显示1行,如果把1改成2
//就表示被模式匹配到的内容以及其前后的行各显示2行。
egrep //基于正则表达式查找文件内容
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,+表示大于,-表示小于
-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
! // ! 和-not含义一样
//处理动作:默认为显示到屏幕上
-print //显示
-ls //类似ls -l的形式显示每一个文件的详细信息
-delete //删除查找到的文件
-fls /path/to/somefile //查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \; //对查找到的每个文件执行COMMAND,每次操作都需要用户确认
-exec COMMAND {} \; //对查找到的每个文件执行COMMAND,操作不需要确认
注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令,而有些命令不能接受过多参数,此时命令执行可能会失败。而xargs可规避此问题。
xargs //通过管道将查找到的内容给xargs处理,xargs会把内容进行拆分,拆分完毕后将内容作为参数交给后面的命令执行。