linux命令:grep,sort,find,uniq用法详解

发布时间:2021-01-16编辑:脚本学堂
四个重要的linux命令,grep命令、sort命令、find命令与uniq命令的用法,这几个linux命令的格式、选项与用法例子。
3、linux find命令
功能
查找特定字符串的文件或目录

格式
find [pathName] [options ] [tests] [actions]
pathname:路径,当前为.   用户根目录为~   系统根目录/
options:命令选项 见列表
test 一些针对属性的测试
actions    [-print   -exec   -ok]
-print:将匹配文件输出到标准输出
-exec command:对匹配文件执行参数所给的shell命令,这个动作必须使用;字符对结尾
-ok command:同上,但存在询问选择
-ls:对当前文件使用ls-dils

主要选项:
-name pattern
按文件名查找,不包含路径名,提供匹配模式pattern,pattern必须总是用引号括起
-perm 权限数值
按文件权限查找
-user username
按文件属主查找  find –user ken
-nouser
搜索不属于本机用户的文件
-group 组名
按文件所属的组查找
-nogroup
搜索不属于本机组的文件
-type
按文件类型查找 b块设备,p管道,d目录,l符号链接
、       C字符设备,f普通文件
--size n[c]
查文件长度为n的文件,c表以字符计,默认以块计算
-depth
查找时,首先在当前目录,之后再其子目录
-maxdepth N
最多搜索N层目录
-prune
使find不在当前指定的目录中查找,若使用-depth,本选项忽略
-atime n
文件在n天之前被最后访问过
-amin -n
-mtime –n +n
按文件更改时间查找 –n  n天内,  +n n天前
-mmin -n
查找在系统中最后n分钟里修改过的文件
-newer file1 ! file2
查找更改时间比file1新比file2旧的文件
-mount  或 -xdev
查找文件时不跨越文件系统,不搜索其他文件系统中的目录
-fstype
查找位于某一类型文件系统中的文件,文件系统类型可在/etc/fstab中找到
-follow
跟随符号链接
-cpio
对匹配文件使用cpio命令备份到磁带设备文件中
-empty
查找在系统中为空的文件或者文件夹

常用示例:
1.  按文件名
 

find . –name “myfile” –print
find ~ -name “[A-Z]*” –print 【使用了正则】
find . –name “*” -print

2.  按权限数值查找
 

find . –perm 755 -print

3.  按文件属主或属组
 

find . –user ken –print
find . –group mygroup -print

4.  按时间范围查找
 

find / -mtime -5 –print   【5天内的文件,内部计算其实精确到秒,从现在往前五天】

5.  按文件类型查找
 

find ~ -type f –print   【普通文件】

6.  查找比某个文件新或旧的文件
技巧:可通过touch –t 05042121 locateFile    创建时间坐标文件
 

find . –newer file1 !  –newer file2 –print  [比file1新,比file2旧]
 

【使用-exec执行 查看找到的文件列表详情】
 

find . –newer file1 ! –newer file2 –exec ls –l {} ;   【注意分号和反斜杠间无空格】

7.  根据文件大小
默认单位以block,加c表字节
 

find . –size +1000c –print  【大于1000字节,若改为 -300c,表小于300字节】

8.  在当前文件系统查找,不进入其他文件系统
 

find . –name “*.xc” –mount -print

9.  使用-exec 或 –f 来执行shell命令
 

find . –type f –exec ls –l {}  ;
find . –type f –mtime +5 –exec rm {}   ;
find . –type f –mtime +5 –ok rm {}  ;
 

二者区别是exec直接执行,ok还进行询问  【注意反斜扛和大括号之间的空格】

4、linux命令:uniq
Uniq
从文本文件中去除或禁止重复行,一般uniq假定文件已分类排序,并且结果正确[sort –u唯一性选项去除所有的重复行]
Uniq中重复行指持续不断重复出现的行

格式:
uniq –udc –f input-file output-file

选项:
-u 只显示不重复行   unique,唯一
-d 只显示有重复的行,每种重复显示一行
-I 忽略大小写  ???
-c打印每一重复行出现的次数【计数】
-f n为数字,前n个域被忽略

例子:
1,只显示非重复行
 

$uniq –u sortfile

2,提取非重复行到某个文件
 

$uniq –u sortfile result

3,只显示重复行
 

$uniq –d sortfile

4,打印重复行及其出现的次数
 

$uniq –c sortfile

5,忽略比较指定列
 

$uniq –f2 parts.txt

6,对文本文件做交集,并集&差集
 

cat filea fileb | sort | uniq > file、 # 并集
cat filea fileb | sort | uniq –d  > filec  # 交集
cat filea fileb | sort | uniq –u > filec  # 仅存在于filea 或仅存在于 fileb的