功能:从标准输入中读取数据,然后按照指定字符串形式进行排序。默认按照升序排序。
使用格式:
sort [选项] [文件列表]
另外常用的格式:
cat [文件列表] | sort [选项]
sort [选项] < [文件列表]常用选项:
-f:忽略字符的大小写。-n:指定比较字符的数值大小,而不是字符串本身。-t:指定分割符。默认是space或者tab键。如-t:指定分割符是冒号。-k[n1][,n2]:指定分割后进行比较的字段。- 若无
n1和n2,则比较字段为从头到尾。 - 若有
n1,但无n2,则比较字段n1到尾。 - 若有
n1和n2,则比较字段n1到n2。
- 若无
-u:去重。-r:反向排序。-R:打乱顺序。需要注意重复的字符串是打不乱的。
可以用下面文件内容来学习:
xiaowang 98 man 24
xiaoliu 87 man 25
xiaohu 84 man 32
xiaozhi 101 woman 21
xiaohu 84 man 32
𝟐. uniq指令
功能:去除重复的行。
注意前提是重复的行是连续的才行,否则是没办法进行去重的,所以一般要用管道配合 sort 命令使用!
使用格式:
uniq [选项] [输入文件[输出文件]]常用选项:
-c:显示每行重复的次数。-d:仅显示重复过的行。-u:仅显示不曾重复过的行。
同样也可用下面文件来学习:
xiaowang 98 man 24
xiaoliu 87 man 25
xiaohu 84 man 32
xiaozhi 101 woman 21
xiaohu 84 man 32𝟑. wc指令
功能:统计指定文件的字节数、字数、行数,并将结果显示出来。
使用格式:
wc [选项] [文件]...常用选项:
-c:统计字节数-l:统计行数-w:统计字数
𝟒. grep命令
功能:在文本文件中查找指定模式的词或短语,并在标准输出设备上显示包括给定字符串模式的所有行。
需要注意的是,grep 命令默认使用的是基础的正则表达式匹配,可以配合通配符使用。
使用格式:
grep [选项] 查找模式 [文件名1, 文件名2, ……]常用选项:
-E:将查找模式解释成扩展的正则表达式-P:将查找模式解释成Perl的正则表达式-F:将查找模式解释成单纯的字符串-R:递归方式查询目录下所有子目录中的文件-n:显示行号-c:只显示文件中包含匹配字符串的行的总数-i:不区分大小写-H:输出时显示对应文件名-v:只显示不包含匹配字符串的文本行
𝟓. find命令
功能:在指定目录下查找相应的文件。
注意 find 指令是从指定目录开始递归地搜索其各子目录,查找满足寻找条件的文件,并对它进行相应的操作。并且不加目录名的话,则默认在当前目录开始查找!
使用格式:
find [目录名] [条件表达式] 其中被查找的文件可以由提供的条件表达式确定,对复合表达式要用括号 () 括起来。该表达式可以是一个用逻辑运算符 not、and、or 组成的符合条件表达式:
-not或者!:表示逻辑非-and或者-a:表示逻辑与-or或者-o:表示逻辑或
举个例子,比如 \(-name a.out -o -name '*.o' \),表示查找文件名为 a.out 和匹配后缀为 .o 的文件。
常用条件表达式:
-name pattern:按照pattern所匹配的模式查找文件- 其中
pattern中可以用通配符*、?、[],但必须把pattern用双引号括起来,比如"-name "tmp*""。
- 其中
-path pattern:查找路径名匹配pattern的所有文件- 其中
pattern中可以用通配符*、?、[],但字符/或者.被看成普通字符。
- 其中
-lname pattern:查找文件名与所给字符串pattern所匹配的所有符号链接文件。-type 类型:查找指定文件类型的文件b:块设备文件d:目录c:字符设备文件p:管道文件l:符号链接文件f:普通文件s:套接字文件
-perm [+|-]文件权限:按照文件权限来查找文件,比如find . -perm 660。- 若权限前面加了
+,则表示只要匹配到某位权限位符合即可! - 若权限前面加了
-,则表示需要匹配所有权限位都符合才算匹配!
- 若权限前面加了
-v:只显示不包含匹配字符串的文本行-user:按照文件所属主来查找文件-group:按照文件所属组来查找文件-nouser:查找无有效所属主的文件,即该文件的所属主在/etc/passwd中不存在-nogroup:查找无有效所属组的文件,即该文件的所属组在/etc/groups中不存在-mtime [-n|+n]:按照文件的数据修改时间来查找文件。-n表示文件更改时间距离现在 n 天以内(下面两个指令也是一样)+n表示文件更改时间距离现在 n 天之前(下面两个指令也是一样)
-atime [-n|+n]:按照文件的访问时间来查找文件-ctime [-n|+n]:按照文件的状态修改时间来查找文件-mmin n:查找在指定时间n分钟内数据被修改过的文件-amin n:查找在指定时间n分钟内被访问过的文件-cmin n:查找在指定时间n分钟内状态被修改过的文件-depth:从指令目录下最深层次的子目录开始查找-size [+|-]n[cwbkMG]:查找指定文件大小为n的文件。+表示大于n的文件,-表示小于n的文件c:字节w:双字节(字)b:512 字节的块(默认值)K、M、G:表示对应的字节大小
还有两个重要并且经常使用的条件表达式:
-exec command \;:- 若
find命令返回值是0(表示true),则执行command命令,并且最后必须以\;结尾。 - 将
find命令后的所有参数(再遇到;之前的参数)都作为command命令的参数。 - 其中
command中可以用{}来表示find命令中查找到的文件名集合。 - 举个例子,
find . -name "*.txt" -exec gzip {} \;表示将当前目录及其子目录中后缀名为.txt的文件进行gzip格式一个一个打包!
- 若
-ok command \;:- 这个命令和上面的
exec命令是一样的,只不过多了在操作之前进行确认的步骤,多用于一些高风险的指令比如rm指令。
- 这个命令和上面的
𝟔. xargs命令
功能:能够处理从标准输入或管道符输入的数据,并将其转换成命令参数,也可以将单行或多行输入的文本转换成其他格式,用作给其他命令传递参数的过滤器。
单独使用该命令并没有价值,通常要让它配合其它命令来使用!
使用格式:
xargs [参数] [文件名]常见参数:

参考实例:
默认以空格为定界符,以多行形式输出文件内容,每行显示 3 段内容值:
[liren@VM-8-7-centos ~]$ cat Makefile | xargs -n3
CXX = g++
DEBUG = -g
THREAD = -lpthread
HIGH_VERSION = -std=c++17
CXXFLAGS = -c
……省略下面内容 指定字符 X 为定界符,默认以单行的形式输出字符串内容:
[liren@VM-8-7-centos ~]$ echo "FirstXSecondXThirdXFourthXFifth" | xargs -dX First Second Third Fourth Fifth 指定字符 X 为定界符,以多行形式输出文本内容,每行显示 2 段内容值:
[liren@VM-8-7-centos ~]$ echo "FirstXSecondXThirdXFourthXFifth" | xargs -dX -n2
First Second
Third Fourth
Fifth 由 xargs 调用要执行的命令,并将结果输出到终端界面:
[liren@VM-8-7-centos ~]$ ls | xargs -t -I{} echo {}
echo build
build
echo Code
Code
echo gobang
gobang
echo linux
linux
……省略下面内容 上面这个实例中用到 -I{},其中 {} 就表示这些输入参数,防止指令的参数位置混淆!
𝟕