本文共 3687 字,大约阅读时间需要 12 分钟。
本文为原创文章,转载请标明
exec
或 ok
处理查找到的文件xargs
处理查找到的文件匹配任意一个字符
匹配0或1或多个字符
匹配一个字符范围,其表现形式可以是“-”表示的字母和数字的范围,也可以是几个字符的组合
不匹配符号内出现的字符组合或字符数字范围
匹配任意一个字符
匹配单个字符或一个字符串序列的一次或多次重复出现
在匹配中指示行首位置字符串或模式
在匹配中指示行尾位置字符串或模式
屏蔽一些特殊字符的特殊含义
与文件名通配符中的范围匹配符和排除范围匹配符用法基本相同
在文本开头或文本结尾匹配与单词开头或单词结尾相匹配的特定的字符串或模式
可以精确匹配字符或字符串连续出现的次数或次数范围
基本格式
# find [path] [expression]
参数:
depth:先从当前目录查找,然后再从当前目录的子目录中查找maxdepth LEVELS:向下搜索到第LEVELS层目录,LEVELS为0表示只在当前目录查找mindepth LEVELS:至少向下搜索LEVELS层目录mount:不搜索远程文件系统follow:搜索如果遇到链接文件就连同链接所指向的文件一并查找name:按文件名查找iname:按文件名查找,不区分大小写perm:按文件权限查找tye:按文件类型查找mtime +n[-n]:按文件内容改变的时间查找,+n表示修改时间距现在n天前,-n表示修改时间距现在n天以内ctime +n[-n]:按文件属性改变的时间查找atime +n[-n]:按文件访问的时间查找size +n[-n]:按文件大小查找,+n表示文件大小大于n,-n表示文件大小小于n,n表示块,1块等于512字节user:按文件所属主查找group:按文件所属组查找nouser:查找没有有效属主的文件nogroup:查找没有有效属组的文件prune:不再指定目录中查找print:将查找的文件输出到标准输出exec:对查找到的文件执行shell命令ok:对查找到的文件执行shell命令,在每次执行前提示用户是否执行
如:
# find /etc -name "*.conf"
如:
# find /etc -perm 664
如:
# find /dev -type b
如:
# find /var/log -mtime -1
如:
# find /var/log -size +1M
如:
# find / -user root
exec
或 ok
处理查找到的文件如:
# find /var/log -size +1M -exec ls -l {} \;
xargs
处理查找到的文件如:
# find ~/ -name "test.txt" | xargs rm
grep:global regular expression print 全局正则表达式打印
# grep [option] [pattern] [file]
参数
i:忽略大小写n:将结果输出的同时,也输出该行行号s:在没有查找到匹配的内容时,不显示错误信息l:从多个文件中查找时,只输出找到匹配内容的文件名称h:从多个文件中查找时,只输出匹配的内容,不显示文件名称c:只输出匹配内容的总行数v:反转查找,即输出匹配内容以外的行
例如:
查询来自云南和河南的学生信息# grep -E 'Yunnan|Henan' students
# tr [option] [string1] [string2]
参数
c:使用string1中字符的补集替换d:删除string1中包含的所有字符s:删除重复字符
例如:
小写转大写# tr -s "a-z" "A-Z"
# sort [option] [file]
参数
b:按字段进行分类并忽略前面的空格或制表符d:按字典的顺序进行排序,将除空格和字母以外的字符排除f:忽略大小写g:根据数值进行排序i:只考虑可打印的字符M:将字符按月份进行比较,例如JAN<...
例如:
对students文件第5个字段第8个字符按数字从大到小排序# sort -k5.8nr students先对students文件第5个字段排序,再按第10个字段排序# sort -k 5,10n students指定“#”作为字段分隔符,并对students文件第三个字段进行排序# sort -t# -k3 students合并students1,students2到students_new# sort -m students1 students2 >students_new
cut [option] [file]
参数
b:表示要操作的对象是字节c:表示要操作的对象是字符f:表示要操作的对象是字段d:指定字段分隔符,默认情况下是制表符tabs:表示不包括没有字段分隔符的行N:表示第N个字节N-:表示从N到一行结束的内的所有文本N-M:表示从N到M之间的所有文本-M:表示从开始到M之间的所有文本-:从开始到结束的所有文本
例如:
剪切students文件所有行的前10个字符# cut -b-10 students以“#”为分隔符,并对students文件第1,2,4个字段进行剪切# cut -d# -f1-2,4 students
paste [option] [file...]
参数
d:对新生成的文本指定新的字段分隔符,默认情况下是制表符tabs:横向粘贴,默认纵向粘贴
例如:
纵向粘贴paste1,paste2文件# paste paste1 paste2
# join [option] file1 file2
参数
a:用于输出2个文件中有关联和没关联的行,将有关联的行执行连接后输出,没关联的行按预定的格式输出e:在文件1和文件2中查找关联字段,如果没有关联字段,则将无关联字段的行相应的字段用参数指定的字符串替代i:在连接过程中忽略大小写j:使用指定的字段作为关键字段连接o:格式化输出t:设置字段间的分隔符,默认为空格或制表符tabv:与参数a的作用相同,但参数v只输出无关联的行
例如:
指定使用文件1的第2个字段和文件2的第2个字段作为关键字,只显示文件1的第1、2、6字段和文件2的第3字段# join -j1 2 -j2 2 -o "1.1,1.2,1.6,2.3" students1 students2
#uniq [option] [input[option]]
参数
c:输出重复行的重复次数d:仅输出重复的行f:忽略一些字段,只比较指定字段s:忽略一些字符,只比较指定字段i:忽略大小写u:输出不重复的行w;指定要比较的字符位置
sort -u
与 uniq
区别
sort -u
将整个文本重复行删除只保留一行 uniq
删除连续重复行只保留一行 例如: 忽略第1个字段,从第2个字段第2个字符处开始比较# uniq -f1 -s3 char
# split [option] [input file] [output file]
参数
l:按行对文件进行分割b:按字节对文件进行分割C:按字符对文件进行分割d:使用数字作为输出文件的后缀
例如:
指定每3行划分为一个文件# split -l 3 students students
如有不当之处,请予指正,谢谢~