一、排序、去重、统计、复制、移动、剪切
1、sort命令
用法:sort [选项]... [文件]...
sort命令默认情况下是用字母的顺序进行排序,现在我们对文件/opt/1.txt中的内容进行排序。
我们先来看看排序前的样子
接下来我们对它进行了排序,通过观察可以发现这些单词按照首字母的顺序进行了排序。
如果文件里有很多相同的单词排序时会默认把它们排到一起(如下图),为了使排序更加清楚整洁,我们可以进行去重排序的操作
-u 去重操作 ,这样我们就可以实现去重排序的操作
我们前面说sort命令默认情况下是用字母的顺序进行排序的,那如果文件里全是数字的话应该如何给这些数字排序?
-n 用数字形式进行排序,这里我们用到sort -n进行数字排序(入下图)
sort -n默认是将数字从小到大排序,我们可以sort -r:反向排序,也就是从大到小排序。
当我们需要按列进行排序时,我们可以用sort -t "分隔符" -k 进行排序的依据列 -n 文件(对数字进行排序就加-n字母就不需要加,接下来要对/etc/passwd的第四列进行排序,第四列是数字所以加-n)
经过观察发现以 :为分隔符的第四列已经进行排序。
2、uniq命令
我们前面说sort -u是去重排序,除此之外还有一个专门进行去重的命令uniq
用法:uniq -选项 文件 , 文本中的连续的重复行进行去重
3、wc命令
wc是文本内容统计的命令-----文本内容一共有多少行、单词、字节
用法:wc [选项]... [文件]...
wc 统计文本的行数、字数、字节数,最后是文件名
[root@xgd opt]# wc test.txt
5 5 32 test.txt
行数 单词数 字节数 文件名
wc -l 只查看行数
wc -w 只查看单词数
wc -c 之查看字节数
wc命令一般配合管道符使用,例如我们想要查看 / 下有多少个文件
4、cp命令
在linux操作系统中复制文件我们用到了cp命令
用法:cp -选项 源文件 目标文件
cp 如果目标文件没有指定文件名,那么复制之后的文件是和源文件名字一样的,复制时如果目标文件指定了复制之后的文件名,那么源文件复制之后的名字就是指定的文件名。
如果想要复制一个文件到当前的工作目录,那么注意,目标文件不能省略,但是可以用.替代
[root@xgd /]# cp /root/test.txt .
如果我们想要复制一个软连接文件,我们可以cp -d
-d :在复制文件的时候保留链接状态
当我们覆盖已经存在的目标文件时会提示我们是否覆盖目标文件为了更方便操作我们可以cp -f
-f:覆盖时不提示
复制目录文件
-r:递归复制目录文件
另外,cp -p可以把修改时间、访问权限全部复制全部复制到新文件里去
-p:将修改时间、访问权限 全部复制
5、mv命令
mv命令是进行剪切操作的
用法:mv [选项] 源文件 目标文件
源文件和目标文件如果是在不同的目录下,则是文件的移动
源文件和目标文件如果是在相同的目录下,类似于重命名的操作
四、文件的查找
1、which和whereis命令
which:搜索系统目录的可执行的二进制文件
whereis:搜索可执行的二进制文件和说明文档的绝对路径
2、find命令(非常重要)
find :按照文件名、文件大小、时间、权限、类型、所属者、所属组等文件属性查找文件
用法:find 查找的路径 查找的条件 具体的条件
find是检索文件的,grep是检索文件内容的
1、按照文件名进行检索
用法:find 文件名 -name:按照文件名检索
如果我们想在 /etc 中查找文件名包含"passwd"的文件我们正常会输入find /etc -name "passwd"
但是find /etc -name "passwd" 是在/etc下,查找文件名是passwd的文件,而不是包含"passwd"的文件
*:是指0个或多个任意字符
find /etc -name "*passwd*"这样才能找到文件名包含"passwd"的文件
同理我们可以输入find /etc -name "passwd*"查找以"passwd"开头的文件
如果不特殊标注,系统默认查找的都是小写字母的文件,我们可以-iname忽略大小写。
用法:find 文件名 -iname 忽略文件名称的大小写
? :表示的是1个任意字符 ,如果我们想要查找b后面跟任意字符的所有文件我们可以
2、find根据文件名大小进行查找
用法:find 文件名 -size [+|-]大小
+表示比指定文件大小大的文件
-表示比指定文件大小小的文件
-size后面一般会跟着不同的单位,一般有bcwkMG,b代表512个字节,c代表1个字节,w代表2个字节等
假设我们要查找 /etc 下比10M大的文件
3、find 文件名 -empty 查找空文件
4、按照修改时间进行文件检索
文件一般有三个时间分别为atime、mtime、ctime,其中atime为文件最近一次访问的时间,mtime为最近一次修改文件内容的时间、ctime为最近一次修改文件元数据的时间,可以用stat命令进行查看。
我们通常用-atime对文件访问时间进行检索
用法:find 文件名 -atime [+|-]时间 :按照文件访问时间进行检索
-5:5天以内被访问的文件
+5:6天前修改的文件
5:5~6这一天修改的文
现在我们要查找 /opt 3天内访问过的文件
同理,-mtime [+|-]时间 :按照文件数据修改时间进行检索,-ctime [+|-]时间 :按照文件元数据的修改时间进行检索
5、通过文件权限进行检索
用法:find 文件名 -perm通过文件权限进行检索
find -perm 权限模式(),查找文件权限是()的文件
find -perm +权限模式(),查找文件权限比()小的文件
find -perm -权限模式(),查找文件权限比()大的文件
以上都是/etc中文件权限为777的文件
6、通过文件所属者、所属组进行检索
文件所属者检索
用法:find 文件名 -user 用户名 按照用户名检索(所属者)的文件
我们也可以通过账户的id进行(所属者)文件的检索
用法:find 文件名 -uid 用户id
文件所属组检索
用法:find 文件名 -group 组名 按照组名检索(所属组)的文件
同理我们可以通过组id查找所属组文件
用法:find 组名 -gid 组id
我们可以通过find / -nouser查找没有所属者的文件,但是这种文件一般不存在。
7、通过文件类型查找文件
常用的文件类型有:
- 普通文件 d 目录文件 c 字符设备文件 b 块设备文件 l 符号链接文件(软连接文件)
我们通常用 ll 命令看每行第一个字符来区别文件类型
用法:find 文件名 -type 文件类型
这里注意用find命令检索普通文件时,f代表普通文件,而不是-
现在我们尝试一下检索/etc中大于1M的普通文件
8、逻辑运算符
这里讲的逻辑运算符是linux命令的逻辑运算符,与编程语言无关。
逻辑与:-a 逻辑与两边的内容必须都为真,最后的结果才是真
逻辑或:-o 逻辑或两边的内容只要有一边是真,其结果就是真
逻辑非(取反):-not 逻辑非表示除了你输入的内容其他都为真
现在我们来使用逻辑运算符找一下/etc中文件大小在1M-5M之间的文件
通过ll命令查看发现查找的文件大小确实符合我们的要求
查找文件名以pass开头所属者为root的文件
通过验证文件既满足以pass开头又满足所属者为root
以上是逻辑与
现在我们用逻辑或查找 / 文件名以a开头或以p开头的文件
最后我们用逻辑非查找/etc中文件名既是以passwd开头的文件但文件名不是passwd的文件
9、-exec(find命令专属的参数)
-exec 作用类似于管道符,把find筛选出来的结果进行近一步的操作
用find -exec必须以\;结尾
用法: find -exec 命令 {} \; {}是表示前面命令输出的结果
现在/opt中有10个以.txt结尾的文件,我们需要找到它们并删除
在find命令中我们能用-exec就用-exec,因为-exec是find命令的专属参数,它在find命令中比管道符更好用。
五、文件的压缩和解压缩
压缩文件
我们为什么要压缩
压缩的好处:1、使传输速率变快 2、减少存储占用的空间
gzip、bzip、xz是linux操作系统中常用的压缩格式,区别是压缩的效率不同,gzip压缩的速度最快压缩后的体积最大,xz压缩的速度最慢,压缩后的体积最小。我们在工作中一般会追求效率所以gzip是使用最多的格式。linux操作系统也提供了zip的压缩包格式。
1、操作和创建zip格式的压缩包:zip 压缩文件名 文件或目录名
现在我们要给/opt中的两个文件1.txt、2.txt创建压缩包
创建完毕,红色代表压缩包文件
我们也可以指定压缩的效率,我们可以在zip后添加-num,其中-9是压缩的最慢但是压缩的最实,-1是效率最快但是压的没有那么实,我们通常以默认形式即可。
2、向压缩文件中添加文件
可以使用以下命令将新文件添加到已有的压缩文件中:
zip -u test.zip newfile.txt
-u 选项表示更新压缩文件,如果文件已存在则更新,不存在则添加。
3、从压缩文件中删除文件
使用以下命令从压缩文件中删除指定文件:
zip -d test.zip newfile.txt
-d 选项用于删除压缩文件中的文件
4、查看压缩文件中的文件列表
可以使用以下命令查看压缩文件中的文件列表:
zip -l test.zip
-l 选项用于列出压缩文件中的文件信息。
解压文件
在Linux系统中,通常使用 unzip 命令来解压ZIP文件。以下是一些常见的用法:
1、解压到当前目录
解压到当前目录:基本语法为 unzip 文件名.zip 。
例如,要解压1.zip 的文件,可在终端中输入 unzip 1.zip ,文件将被解压到当前所在目录。
2、解压到指定目录
解压到指定目录:使用 -d 选项来指定解压的目标目录,如 unzip 文件名.zip -d /path/to/destination 。若目标目录不存在, unzip 命令会尝试创建它。例如, unzip 1.zip -d /home/user/mydir 会将 1.zip 解压到 /home/user/mydir 目录下。
我们也可以将文件压缩成gzip、bzip、xz等不同格式,我们拿gzip举例。
将文件压缩成gzip格式
在Linux操作系统中,可以使用 gzip 命令将文件压缩成gzip格式,以下是其常见用法:
1、基本压缩
直接使用 gzip 命令加上要压缩的文件名,例如:
gzip 1.txt 2.txt
执行该命令后,当前目录下的 1.txt 文件会被压缩成 1.txt.gz ,原始文件将被删除。
如果希望在压缩后保留原始文件,可以使用 -k 或 --keep 选项,如:
gzip -k 1.txt
这样会生成1.txt.gz 压缩文件,同时保留 1.txt 原始文件。
2、递归压缩目录中的文件
如果要压缩一个目录下的所有文件,可以使用 -r 或 --recursive 选项,例如:
gzip -r mydir
这会递归地压缩 mydir 目录及其子目录中的所有文件。
3、查看压缩文件内容
使用 -l 或 --list 选项可以查看压缩文件的相关信息,如:
gzip -l 1.txt.gz
它会显示压缩文件的大小、未压缩文件的大小、压缩比等信息。
4、解压缩gzip文件
gzip -d 1.txt.gz 2.txt.gz
gzip压缩文件后缀为.gz,bzip压缩文件后缀为.bz2,xz压缩文件后缀为.xz
六、归档(文件的打包)
用法:用法: tar [选项...] [FILE]...
三个常用的参数:-c(创建tar包) -x(释放tar包) -t(查看tar包内容,但是不释 放tar包)
注意,三个选项不能复合使用,并且每次使用tar命令,必须存在这三个选项当中的一个
必选参数 :-f :用于指定打包的文件名
当我们用了-c后-f就代表指定打包之后的tar包名称,-f就是指向要释放的tar包,-t就是指定要查看的tar包名
1、创建tar包
现在/opt中有文件1.txt、2.txt,我们将这两个文件打包成tar包
如上图,我们对文件1.txt、2.txt进行了打包,并且在/opt中我们的源文件还在
接下来我们来查看tar包
-v:显示在命令执行的时候的详细信息
我们用之前的命令配合-v就可以输入tar -cvf [打包后的文件名] [要打包的文件或目录],这是打包tar包常用格式
2、释放tar包
我们先把1.txt、2.txt删除,然后再释放tar包,发现删除的文件又被释放出来
当然为了更清处的知道tar包释放的详细信息,我们可以用 tar -xvf [打包文件名] ,这个是常用格式
我们也可以指定tar包释放路径
-C:和-x一起使用,指定tar释放的目标路径
3、压缩打包和解压释放tar包
-z:gzip格式进行压缩
-j:使用bzip2格式压缩
-J:使用xz格式进行压缩
例如我们使用gzip压缩:基本格式为 tar -zcvf [压缩后的文件名] [要压缩的文件或目录]
解压gzip压缩的文件: tar -zxvf [压缩文件名]