RHCSA学习--文件的其他一些操作命令

目录

文件内容统计

wc命令

复制移动文件

复制文件或目录cp命令

 移动文件或目录mv命令

 查找文件路径

拓展:Linux权限数字表示法

解释权限

如何用数字表示权限

whereis命令

which命令

locate命令

 find命令

 find动作

 压缩和解压缩

zip命令和unzip命令

zip命令(压缩命令)

unzip命令(解压缩命令)

 gzip和gunzip命令

gunzip命令(解压缩命令)

gzip命令(压缩命令)

 bzip2命令和bunzip2命令

xz命令和unxz命令

归档命令tar

打包压缩目录

 释放压缩目录

 查看压缩文件


文件内容统计

wc命令

wc命令用于统计文本文件的行数、字数或字节数。

1、显示行数

语法格式

wc -l 文件名

 例子

这个命令可以显示b文件的行数

[root@Test test]# cat -n b
     1    asdf
     2    adf
     3    asdf
     4    asdf
     5    asdf
     6    sadfsadg
     7    asdf
     8    
[root@Test test]# wc -l b
8 b

 2、只显示单词数

语法格式

wc -w 文件名

例子

这个命令可以查看文件b中有几个单词根据结果来看是计算连着的字符串的数目

[root@Test test]# cat b
asdf
adf
asdf
asdf
asdf
sadfsadg
asdf

[root@Test test]# wc -w b
7 b

3、只显示字节数

语法格式

wc -c 文件名

例子

这个命令可以显示b文件的字节数,所显示的字节数应当是每一行都会额外算一个字节

[root@Test test]# cat b
asdf
adf
asdf
asdf
asdf
sadfsadg
asdf

[root@Test test]# wc -c b
39 b

4、行数、单词数、字节数一起显示

语法格式

wc 文件名

例子

查看文件b的行数、单词数、字节数

 [root@Test test]# wc b
 8  7 39 b

5、统计系统有多少用户

在/etc/路径下的passwd文件中存储的是用户的信息,每一行代表一个用户,查询它的行数就可以知道用户的数量了

[root@Test test]# wc -l /etc/passwd
37 /etc/passwd

拓展:有关文件/etc/passwd的详细信息可以从下面链接了解

linux配置文件之/etc/passwd详解 - 知乎 (zhihu.com)

复制移动文件

复制文件或目录cp命令

1、保留拦截、文件属性、递归拷贝目录(相当于dpr的组合)

语法格式

cp -a 源文件 目标文件

 例子

将/test文件中的a文件复制到/test/test1文件去复制文件的名称为a3

# 首先查看a文件

[root@Test test]# cat a
     2    asdf
     4    adf
     1    asdf
     3    asdf
     5    asdf
     6    sadfsadg
     8    asdf
     3    

# 进入 /test/test1中

[root@Test test]# cd  test1/

查看test1文件夹下的文件

[root@Test test1]# ls
a2

# 进行复制拷贝
[root@Test test1]# cp -a ../a a3

# 查看是否复制成功
[root@Test test1]# ls
a2  a3
[root@Test test1]# cat a3
     2    asdf
     4    adf
     1    asdf
     3    asdf
     5    asdf
     6    sadfsadg
     8    asdf
     3    

2、拷贝时保留连接

语法格式

cp -d 源文件 目标文件

3、 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中

语法格式

cp -p 源文件 目标文件

4、若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名

语法格式

cp -d 源文件 目标文件

 移动文件或目录mv命令

用于剪切或重命名文件

语法格式

mv 选项 源文件 目标文件

例子

将test文件夹下的a文件剪贴到test/test1/中并且重命名为liu(如果在原文件下进行操作相当于对文件重命名)

[root@Test test]# cat a
     2    asdf
     4    adf
     1    asdf
     3    asdf
     5    asdf
     6    sadfsadg
     8    asdf
     3    
[root@Test test]# mv a test1/liu
[root@Test test]# cat test1/liu 
     2    asdf
     4    adf
     1    asdf
     3    asdf
     5    asdf
     6    sadfsadg
     8    asdf
     3    
[root@Test test]# ls
b  c  t  test1

 查找文件路径

拓展:Linux权限数字表示法

Linux有三种访问权限 r可读 w可写 x可执行

下面根据给出来的例子来看看如何去看这个权限

[root@Test test]# ll
total 16
-rw-r--r--. 1 root root 39 Jul 28 11:33 b

解释权限

看上面背景被标红的部分共有9格,将这9格分成三部分,每三格一部分,每部分的每个位置上的东西都是不变的都是rwx,也就是从这9格里面看只有第1 4 7格会出现r 2 5 8会出现w 3 6 9会出现x。三部分每部分的意义指的是

第一部分指的是自己的权限

第二部分指的是同组人的权限

第三部分指的是其他人的权限

看上面的例子就可以知道上面的那个文件自己是可读可写不可执行的

同组人只可读

其他人也是只可读

如何用数字表示权限

rwx用二进制来看那个权限出现那个权限就表示为1

那么没种权限对应的数字就可以写成如下形式

权限 权限表示 十进制表示 二进制表示
啥都不可以干 --- 0 000
只可执行 --x 1 001
只可写 - w - 2 010
可写可执行 -wx 3 011
可读 r-- 4 100
可读可执行 r-x 5 101
可读可写 rw- 6 110
可读可写可执行 rwx 7 111

然后上面的例子权限就可以表示成644

whereis命令

可以搜索系统命令的可执行文件路径和说明文档
例子
查询cat命令所在路径
[root@Test test]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz

which命令

which 是搜索系统命令的可执行文件

locate命令

按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db , 可以使用updatedb 命令强制更新数据库。

 find命令

find命令后的参数都可以去去掉路径默认当前所在路径查找去掉、不指定条件默认所有对象都符合条件单独使用find命令默认查找当前目录下的所有路径及其子路径的所有文件包括隐藏目录

语法格式

find 路径 选项 搜索内容

 1、根据名称查找文件

语法格式

find 搜索路径 -name 搜索内容

例子

查找在/tmp中名字为liu的文件

[root@Test test]# find /tmp/ -name liu
/tmp/test/liu

2、根据文件大小搜索

语法格式

find 搜索路径 -size 大小范围

(-意思是找比指定范围还小的文件 +找比指定范围还大的文件)

例子

寻找/tmp文件下小于10k的文件

[root@Test test]# find /tmp -size -10k
/tmp
/tmp/.X11-unix
/tmp/.X11-unix/X1024
/tmp/.X11-unix/X1025
/tmp/.X11-unix/X0
/tmp/.X11-unix/X1
/tmp/.ICE-unix
只展示部分

3、根据时间查找

stat命令可以查看文件的四个时间:atime mtime ctime 四个时间依次是文件访问时间 文件数据修改时间 文件状态修改时间

格式

find 路径 选项 +n/-n (代表天数)

例子

寻找访问时间小于一天的的文件

[root@Test test]# find /tmp/ -atime -1
/tmp/
/tmp/.X11-unix
/tmp/.X11-unix/X1024
/tmp/.X11-unix/X1025
/tmp/.X11-unix/X0
/tmp/.X11-unix/X1
/tmp/.ICE-unix
只显示部分

4、根据权限查找

 权限模式: 查找文件权限刚好等于权限模式的文件
-权限模式: 查找文件权限全部包含权限模式的文件
+权限模式: 查找文件权限包含权限模式的任意一个权限的文件

格式

find 搜索路径 -perm 权限模式

例子

查找/tmp路径下 权限等于777的文件

[root@Test test]# find /tmp -perm 777
/tmp/.ICE-unix/1442
/tmp/.ICE-unix/2154
/tmp/test/test1/a2

5、按照所有者和所有组查询

格式

按用户id查询

find 搜索路径 -uid 用户id

按组d查询

find 搜索路径 -gid 组d 

按用户名查询

find 搜索路径 -user 用户名

按组名查询

 find 搜索路径 -group 组名

例子

在/tmp下查询用户名为root的文件

[root@Test test]# find /tmp -user root
/tmp
/tmp/.X11-unix
/tmp/.ICE-unix
/tmp/.XIM-unix
/tmp/.font-unix

只显示部分

6、按文件类型搜索

格式

find 搜索路径 -type 搜索类型

 例子

查找在/tmp路径下的软连接文件

[root@Test test]# find /tmp/ -type l
/tmp/test/test1/a2

7、逻辑运算符

-a: and 逻辑与
-o: or 逻辑或
-not: not 逻辑非
例子
寻找根目录下用户号为0且文件大于1k的文件
 find / -uid 0 -a -size +1k

 find动作

 动作可以写在命令后面

例子

从文件/tmp中搜索名字为liu的文件并且删除它

[root@Test test]# ls
b  c  liu  t  test1
[root@Test test]# find /tmp/ -name liu -delete 
[root@Test test]# ls
b  c  t  test1

 压缩和解压缩

zip命令和unzip命令

zip命令(压缩命令)

1、压缩文件

格式

zip 压缩文件 源文件

例子

将test文件夹中的b文件压缩到test1文件夹中且压缩后名字为b1.zip

 [root@Test test]# ls
b  c  t  test1
[root@Test test]# zip test1/b1.zip b
  adding: b (deflated 49%)
[root@Test test]# ls test1/
a2  a3  b1.zip

2、 最高压缩率压缩

格式

zip -9 压缩文件 源文件

例子

将test文件夹中的b文件以最高压缩率压缩到test1文件夹中且压缩后名字为b2.zip

[root@Test test]# ls
b  c  t  test1  test2
[root@Test test]# zip -9 test1/b2.zip b
  adding: b (deflated 49%)
[root@Test test]# ls test1
a2  a3  b1.zip  b2.zip

3、压缩目录及目录下文件和子目录

格式

zip -r 压缩文件 源文件

 例子

将文件夹test下的test1文件夹压缩至test2这个文件夹中并且命名为test11.zip

[root@Test test]# ls
b  c  t  test1  test2
[root@Test test]# zip -r test2/test11.zip test1
    zip warning: name not matched: test1/a2
  adding: test1/ (stored 0%)
  adding: test1/a3 (deflated 56%)
  adding: test1/b1.zip (stored 0%)
  adding: test1/b2.zip (stored 0%)
[root@Test test]# ls test2
test11.zip

 4、在压缩文件中添加新的文件

格式

zip -m 压缩文件 新的文件

 例子

在压缩文件b1.zip中添加文件t ,将t文件添加入文件夹b1.zip中后在原文件中t文件会消失

[root@Test test]# zip -m test1/b1.zip t
  adding: t (deflated 69%)

# 查看b1.zip下的文件

[root@Test test]# unzip -v test1/b1.zip 
Archive:  test1/b1.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
      39  Defl:N       20  49% 07-28-2023 11:33 42eb94e6  b
      39  Defl:N       12  69% 07-27-2023 21:53 ac2dfb6e  t
--------          -------  ---                            -------
      78               32  59%                            2 files

# 查看test文件 t文件消失

[root@Test test]# ls
b  c  test1  test2

 5、在压缩文件中删除指定文件

格式

zip -d 压缩文件 要删除文件

 例子

将压缩文件b1.zip中的t文件删除

[root@Test test]# zip -d test1/b1.zip t
deleting: t

# 查看b1.zip文件中的文件
[root@Test test]# unzip -v test1/b1.zip 
Archive:  test1/b1.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
      39  Defl:N       20  49% 07-28-2023 11:33 42eb94e6  b
--------          -------  ---                            -------
      39               20  49%                            1 file

 6、在压缩某个文件夹时排除指定文件

格式

zip -r 压缩文件 要删除文件 -x 要排除的文件

 例子

在将文件test1压缩至test2并且压缩后的文件名为test12.zip 且排除test1 中的a2文件

[root@Test test1]# ls
a2  a3  b1.zip  b2.zip

[root@Test test]# zip -r test2/test12.zip test1 -x test1/a2
    zip warning: name not matched: test1/a2
  adding: test1/ (stored 0%)
  adding: test1/a3 (deflated 56%)
  adding: test1/b2.zip (stored 0%)
  adding: test1/b1.zip (stored 0%)
[root@Test test]# unzip -v test2/test12.zip 
Archive:  test2/test12.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 07-29-2023 21:27 00000000  test1/
      95  Defl:N       42  56% 07-27-2023 21:22 f9cab6ac  test1/a3
     172  Stored      172   0% 07-29-2023 21:13 2452ac99  test1/b2.zip
     172  Stored      172   0% 07-29-2023 21:27 6daddda9  test1/b1.zip
--------          -------  ---                            -------
     439              386  12%                            4 files

unzip命令(解压缩命令)

1、 查看压缩文件目录不解压

格式

unzip -v 压缩文件 

 例子

查看test1文件夹下的b1.zip压缩文件

[root@Test test1]# ls
a2  a3  b1.zip  b2.zip

[root@Test test]# unzip -v test1/b1.zip 
Archive:  test1/b1.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
      39  Defl:N       20  49% 07-28-2023 11:33 42eb94e6  b
--------          -------  ---                            -------
      39               20  49%                            1 file

 2、解压缩文件

格式

unzip 压缩文件 -d 解压缩后文件所在路径

 例子

将test1中的b1.zip中的文件解压至test2中去

[root@Test test1]# ls
a2  a3  b1.zip  b2.zip

[root@Test test]# unzip test1/b1.zip -d test2
Archive:  test1/b1.zip
  inflating: test2/b                 
[root@Test test]# ls test2
b  test11.zip  test12.zip

将将test1中的b2.zip中的文件解压至test2/1中去(若解压路径不存在会创建一个路径)

[root@Test test1]# ls
a2  a3  b1.zip  b2.zip

[root@Test test]# ls test2
b  test11.zip  test12.zip

[root@Test test]# unzip test1/b2.zip -d test2/1
Archive:  test1/b2.zip
  inflating: test2/1/b               
[root@Test test]# ls test2
1  b  test11.zip  test12.zip

 gzip和gunzip命令

gunzip命令(解压缩命令)

gunzip == gzip -d

gzip命令(压缩命令)

1、压缩文件不保留原文件

格式

gzip 要压缩的文件

例子

将test文件夹中的b文件压缩原文件消失

[root@Test test]# ls
b  c  test1  test2
[root@Test test]# gzip b
[root@Test test]# ls
b.gz  c  test1  test2

 2、压缩文件保留原文件

>号将输出到标准输出的数据重定向到 >之后的文件中, 重命名压缩文件可以用这种方法

格式

gzip -c 要压缩文件 > 被压缩到哪里及压缩后文件的名字

 例子

将文件夹test下的c文件压缩至test1文件夹下并且命名为123.gz 且原文件c保留了下来

注:压缩时压缩名要加后缀.gz

[root@Test test]# gzip -c c > test1/123.gz

[root@Test test]# ls
b.gz  c  test1  test2
[root@Test test]# cd test1
[root@Test test1]# ls
123.gz  a2  a3  b1.zip  b2.zip

 3、压缩目录

格式

gzip -cr 要压缩文件 > 被压缩到哪里及压缩后文件的名字

 例子

将文件夹test下的test1文件夹压缩至test2文件夹下并且命名为124.gz 且原文件test1保留了下来

[root@Test test]# gzip -cr test1 > test2/124.gz
[root@Test test]# ls test2
1  124.gz  b  test11.zip  test12.zip

[root@Test test]# ls
b.gz  c  test1  test2

4、解压缩

格式

gzip -dc 要压缩文件 > 被压缩到哪里及压缩后文件的名字

 例子

将test1文件夹下的123.gz解压缩到上一级文件夹下也就是test文件夹并且重命名为1.txt且原文件会保留

[root@Test test1]# gzip -dc 123.gz > ../1.txt
[root@Test test1]# cd ..
[root@Test test]# ls
1.txt  b.gz  c  test1  test2

[root@Test test1]# ls
123.gz  a3  b1.zip  b2.zip

 5、查询压缩文件不解压缩

就是查看命令的前面加个z

例子

[root@Test test1]# zcat 123.gz
adf
cd
gf
bf
D
A
dfs
jh
try
  aadf
  AASDF

 bzip2命令和bunzip2命令

bzip命令于gzip命令基本相同,但是压缩率更高,压缩后缀为bz2

由于与gzip命令基本相同就简单的来·几个例子

注:查看压缩文件的命令时查看命令前加bz

例子

将test文件夹下的1.txt压缩至test1下且压缩名为1123.bz2

[root@Test test]# bzip2 -c 1.txt  > test1/1123.bz2
[root@Test test]# ls test1
1123.bz2  123.gz  a3  b1.zip  b2.zip

例子

将刚刚压缩的文件解压缩至test文件夹下

[root@Test test1]# bzip2 -dc 1123.bz2 > ../2.txt
[root@Test test1]# cd ..
[root@Test test]# ls
1.txt  2.txt  b.gz  c  test1  test2

xz命令和unxz命令

总体来说,xz的使用方法和gzipbzip2大体相同,xz的压缩率更高,因此压缩同样一个文件,使用xz最费时但压缩后文件最小

压缩文件后缀为xz

注:查看压缩文件的命令时查看命令前加xz

同样来个例子

将test文件夹下的1.txt压缩至test1下且压缩名为2123.xz

[root@Test test]# xz -c 1.txt > test1/2123.xz
[root@Test test]# ls test1
1123.bz2  123.gz  2123.xz  a3  b1.zip  b2.zip

归档命令tar

tar命令作用是将多个文件打包成一个文件然后进行压缩,tar命令支持使用gzipbzip2xz命令对打包后的文件进行压缩,因此常见的后缀为.tar.gz.tar.bz2.tar.xz

选项 功能

-c

创建.tar格式的包文件

-x

释放.tar格式的包文件

-t

查看包中的文件列表

-f(必选项)
用于指定打包文件名。
当与 -c 选项一起使用时,创建的 tar 包文件使用该选项指定的文件名
当与 -x 选项一起使用时 , 则释放该选项指定的 tar 包文件
-v
表示在命令执行时显示详细的提示信息
-p
打包时保留文件及目录的权限
-z
调用 gzip 程序,以 gzip 格式压缩或解压缩文件( .tar.gz
-j
调用 bzip2 程序,以 bzip2 格式压缩或解压缩文件( .tar.bz2
-J
使用 xz 压缩或解压缩文件( .tar.xz ), xz 的压缩率通常比 bzip2 更高
-C (大写字母 C
-x 选项一起使用,表示释放包时指定释放的目标路径

格式

tar 选项 文件

打包压缩目录

格式

tar -cf 压缩后文件路径及文件名 要压缩的文件

将test文件下的1.txt  2.txt  3.txt压缩至test2中且压缩名为1-3.tar.gz

[root@Test test]# ls
1.txt  2.txt  3.txt  b.gz  c  test1  test2

[root@Test test]# tar -czf test2/1-3.tar.gz 1.txt 2.txt 3.txt 

[root@Test test]# ls test2
1  124.gz  1-3.tar.gz  b  test11.zip  test12.zip

 释放压缩目录

格式

tar -xf 要解压缩的压缩包 -C 解压缩的路径

例子

将刚刚打包的1-3.tar.gz文件解压缩至test1中

[root@Test test]# tar -xzf test2/1-3.tar.gz -C test1/
[root@Test test]# ls test1
1123.bz2  123.gz  1.txt  2123.xz  2.txt  3.txt  a3  b1.zip  b2.zip

 查看压缩文件

格式

tar -tv 压缩包名

 例子

查看刚刚打包的文件

[root@Test test]# tar -tvf test2/1-3.tar.gz 
-rw-r--r-- root/root        46 2023-07-29 22:28 1.txt
-rw-r--r-- root/root        46 2023-07-29 22:41 2.txt
-rw-r--r-- root/root        46 2023-07-29 23:14 3.txt

你可能感兴趣的:(学习,linux)