1.tar:
#去掉文件中重复的行:
cat a.txt | sort | uniq > a.out
#解压:
tar zxvf FileName.tar.gz
#压缩:
tar zcvf FileName.tar.gz DirName
2.grep:
说明:分析一行的信息,通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等:
1.语法格式
grep [-acinv] [--color=auto] '查找字符串' filename
-a :将binary文件以text文件的方式查找数据
-c :计算找到‘查找字符串’的次数
-i :忽略大小写的区别,即把大小写视为相同
-v :反向选择,即显示出没有‘查找字符串’内容的那一行
2.举例
# 取出文件config中包含MANPATH的行,并把找到的关键字加上颜色
grep --color=auto 'MANPATH' config
# 把ls -l的输出中包含字母file(不区分大小写)的内容输出
ls -l | grep -i file
3.find:
说明:查找指令,使用也相对较为复杂,参数也比较多
1.语法格式
find path [option] [action] filename
# 与时间有关的参数:
-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
-newer file : 列出比file还要新的文件名
# 例如:
find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件
# 与用户或用户组名有关的参数:
-user name : 列出文件所有者为name的文件
-group name : 列出文件所属用户组为name的文件
-uid n : 列出文件所有者为用户ID为n的文件
-gid n : 列出文件所属用户组为用户组ID为n的文件
# 例如:
find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件
# 与文件权限及名称有关的参数:
-name filename :找出文件名为filename的文件
-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件
-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、
目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
# 例如:
find / -name passwd # 查找文件名为passwd的文件
find . -perm 0755 # 查找当前目录中文件权限的0755的文件
find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte
4.ch系列:
chgrp:改变文件所属用户组,要被改变的组名必须在/etc/group文件内存中
chown: 改变文件的所有者和群组,必须是管理员
chmod:改变文件的权限。每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。
以log2012.log为例:-rw-r–r– 1 root root 296K 11-13 06:03 log2012.log
第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。
第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。
1.语法格式
chgrp [-RV] 组名 文件名
-R 进行递归的持续对所有文件和子目录更改
-v 运行时显示详细的处理信息
--reference=filename 根据所选文件名修改
2.举例
# 递归地把dir目录下中的所有文件和子目录下文件的用户组修改users
chgrp users -R ./dir
#改变文件log2013.log的群组属性,使得文件log2013.log的群组属性和参考文件log2012.log的群组属性相同
chgrp --reference=log2012.log log2013.log
1.语法格式
chown [选项][所有者][:[组]] 文件
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
--reference=<目录或文件> 把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组
2.举例
chown mail:mail log2012.log 改拥有者和群组
chown mail: log2012.log 改拥有者
chown :mail log2012.log 只改群组
1.语法格式
chmod [-cfvR] [--help] [--version] mode file
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息
选择参数:
--reference=<目录或者文件> 设置成具有指定目录或者文件具有相同的权限
<权限范围>+<权限设置> 使权限范围内的目录或者文件具有指定的权限
<权限范围>-<权限设置> 删除权限范围的目录或者文件的指定权限
<权限范围>=<权限设置> 设置权限范围内的目录或者文件的权限为指定的值
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限
该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
1)文字设定法:
chmod [who] [+ | - | =] [mode] 文件名
2)数字设定法
chmod [mode] 文件名
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
数字与字符对应关系如下:r=4,w=2,x=1
若要rwx属性则4+2+1=7
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
2. 举例
#增加文件所有用户组可执行权限
命令:chmod a+x log2012.log
#同时修改不同用户权限
命令:chmod ug+w,o-x log2012.log
#使用“=”设置权限,撤销原来所有的权限,然后使拥有者具有可读权限
命令:chmod u=x log2012.log
#给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
命令:chmod 751 file
命令:chmod u=rwx,g=rx,o=x file
#为所有用户分配读权限
命令:chmod 444 file
5.join:
根据共有的关键字合并数据文件
1.语法格式
join [options...] 文件1 文件2
默认情况下,这两个文件的第一列就是公共字段,连接后的字段之间以空白分隔。
参数说明:
-a<1或2> 除了显示原来文件中匹配的行之外,还显示左边或右边文件中没不匹配的行。
-v<1或2> 跟-a相同,但是只显示左边或右边文件中不相同栏位的行。
-t<字符> 使用列间的分隔字符。比如':',$'\t'(制表符比较特殊的表达)
-i忽略大小写
-1 <field1>以file1 field 1做匹配字段
-2 <field2>以file2 field 2做匹配字段
-j <field>以file1 field 和file2 field做匹配字段
-e<字符串> 若file1和file2中找不到指定的列,则在输出中填入选项中的字符串。
-o<格式> 只输出file1,file2中对应的列
注意:
为了让 join 运行得到正确结果,输入文件必须先完成排序(sort指令)。file1和file2必须使用相同分隔符,比如都是空格或者制表符。
2.举例
1.join -j 1 file1.txt file2.txt
2.join -1 2 -2 3 file1.txt file2.txt
3.join -o 1.1 -o 1.2 -o 2.2 -o 2.3 -e 'empty' -a 1 file1.txt file2.txt
4.连接多个文件:join file1 file2 | join - file3 | join - file4
5.join file1 file2 内连接 (关键字不匹配的行不会输出)
6.join -a1 file1 file2 左连接 (显示左边文件所有记录,右边文件不匹配的显示空白)
7.join -a2 file1 file2 右连接 (显示右边文件所有记录,左边文件不匹配的显示空白)
8.join -a1 -a2 file1 file2 全连接 (显示两边文件所有记录,对应文件不匹配的显示空白)
6.在目录统计和搜索文件
#统计某文件夹下文件的个数
ls -l ./ |grep "^-"|wc -l
#统计某文件夹下目录的个数
ls -l ./ |grep "^d"|wc -l
#统计文件夹下文件的个数,包括子文件夹里的
ls -lR ./ |grep "^-"|wc -l
#统计文件夹下目录的个数,包括子文件夹里的
ls -lR ./ |grep "^d"|wc -l
#统计文件夹下json文件的个数
ls -l ./ | grep 'json' |wc -l
7.常用命令
#去掉文件中重复的行:
cat a.txt | sort | uniq > a.out