一、两个文件的交集、并集(前提条件:每个文件中不得有重复行)
1. 取出两个文件的并集(重复的行只保留一份)
cat file1 file2 | sort | uniq > file3
2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)
cat file1 file2 | sort | uniq -d > file3
3. 删除交集,留下其他的行
cat file1 file2 | sort | uniq -u > file3
二、两个文件合并
1. 一个文件在上,一个文件在下
cat file1 file2 > file3
2. 一个文件在左,一个文件在右
paste file1 file2 > file3
三、一个文件去掉重复的行
1. 重复的多行记为一行
sort file |uniq
2. 重复的行全部去掉
sort file |uniq -u
四、find命令
1.find directory [options]
其中directory是检索的起始目录 ,options是一种表达式选项,用于指定各种匹配准则或检索条件。
如:检索当前工作目录及其子目录下所有以“.c”为后缀的文件,并打印文件名
$ find . -name '*.c' -print
2.利用find命令的"-exec"选项,采用下列两种命令形式,还能够以批处理的方式,把检索出来的文件作为参数,交由其他命令做进一
步的加工处理。
-exec command {} \;
-exec command {} \+
其中,command可为任何文件处理命令,花括号表示其参数取自find命令的输出,即由find命令检索出来的文件名予以替换。注
意,“-exec”选项的后面必须附加转义的分号“\;" 或转义的加号“\+”,作为命令的终结符。例如:
想要删除当前目录及其子目录中扩展名为“.tmp”的所有文件,可以使用下列命令
$ find . -name '*.tmp' -exec rm {} \;
横向合并当前目录及其子目录中扩展名为“.txt”的所有文件到文件all中,可以使用下列命令
$ find . -name '*.txt' -exec cat {}>all \+
五、统计文件的行数
语法:wc[选项]文件
说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有
指定文件的总统计数。字是由空格字符区分开的最大字符串。
该命令各选项含义如下:
-c统计字节数。
-l统计行数。
-w统计字数。
这些选项可以组合使用。
输出列的顺序和数目不受选项的顺序和数目的影响。
总是按下述顺序显示并且每项最多一列。
行数、字数、字节数、文件名
如果命令行中没有文件名,则输出中不出现文件名。
例如:
$wc -lcw file1 file2
4 33 file1
7 52 file2
11 11 85total
举例分析:
1.统计demo目录下,js文件数量:
finddemo/ -name "*.js" |wc -l
2.统计demo目录下所有js文件代码行数:
finddemo/ -name "*.js" |xargs cat|wc -l 或 wc -l `find ./ -name "*.js"`|tail -n1
3.统计demo目录下所有js文件代码行数,过滤了空行:
find/demo -name "*.js" |xargs cat|grep -v ^$|wc -l