LINUX 文件操作

目录

一、查看文件内容

1、cat

2、head

3、tail

4、more

5、less

二、过滤文件内容显示

三、切割显示

四、排序显示

五、其他显示命令

1、uniq

2、tr

六、文本内容

七、复制、移动文件

1、复制文件

2、移动文件

八、查找文件路径

九、压缩和解压文件

1、zip和unzip

2、gzip和gunzip

十、tar归档


一、查看文件内容

1、cat

查看文本文件的内容。

基本语法

php 复制代码
cat [选项] 文件路径

选项:

-n :对输出的文件内容中的所有行标注行号;

-b :对输出文件内容中的非空行标注行号;

例如:

php 复制代码
[root@node1 test]# cat -n a.txt 
     1	11
     2	44
     3	
     4	33
     5	
     6	66
     7	
     8	55
     9	
[root@node1 test]# cat -b a.txt 
     1	11
     2	44

     3	33

     4	66

     5	55

2、head

默认查看文档的前10行。

基本语法

php 复制代码
head -数字 文件路径

例如

php 复制代码
[root@node1 test]# head a.txt 
11
44

33

66

55

[root@node1 test]# head -5 a.txt 
11
44

33

3、tail

默认查看文件后10行。

基本语法

php 复制代码
tail [选项] 文件路径

选项:

-数字(num) :指定查看文挡后num行的内容。

-f :不停的去读取和显示文件最小的内容,这样有实施监视的效果。Ctrl+C键终止显示和追踪。

例如:

php 复制代码
[root@node1 test]# tail -4 a.txt 
66

55

4、more

分页查看文件内容,按回车键翻滚,按空格键向下翻页,按b键向上翻页,文件末尾more会自动退出。

基本语法

php 复制代码
more [选项] 文件路径

例如

5、less

与more功能类似,按q退出。

基本语法

php 复制代码
less [选项] 文件路径

选项:

-c :从顶部清屏然后显示文件

-N :在每行前添加行号输出

例如

less -c a.txt

less -cN a.txt

二、过滤文件内容显示

grep:在指定的普通文件中查找并显示含有指定字符串的行,也可以结合管道符一起使用。

基本语法

php 复制代码
grep [选项] 关键字符串 文件路径

常用选项:

-c : 显示找到的行数

-i :忽略大小写

-n :显示行号

-v :反向选择,仅列出没有关键字符串的行

特殊字符:

^[a] :匹配以a开始的行

^[ab] :匹配以a或b开始的行

^[^ab] :匹配不以a或b开始的行

^[0-9] :匹配以数字开始的行

a$ :匹配以a结尾的行

^$ :过滤空白行

例如

php 复制代码
[root@node1 test]# grep ^1 a.txt 
11
[root@node1 test]# grep 1$ a.txt 
11
[root@node1 test]# grep ^$ a.txt 




[root@node1 test]# grep ^[1-3] a.txt 
11
33
[root@node1 test]# grep ^[12345] a.txt 
11
44
33
55

三、切割显示

cut用于按列提取文本内容。

基本语法

php 复制代码
 cut [选项] 文件名称

-c :指定提取字符位置列表

-f :指定提取的字段列表,默认以水平制表符分隔,字段之间可以指定分隔符分隔

-d :指定字段的分隔符,默认为水平制表符分隔

-n :取消字符分隔符的解释,视为普通字符

-s :只输出包含分隔符的行

例如

查看/etc/passwd文件中前5行以 : 分隔,第1列字段的值。

php 复制代码
[root@node1 test]# cut -d: -f1 /etc/passwd | head -5
root
bin
daemon
adm
lp

四、排序显示

sort命令用于文本内容进行排序显示。

基本语法

php 复制代码
sort [选项] 文件名称

常用选项:

-f :忽略大小写

-b :忽略缩进与空格

-n :以数值型排序

-r :反向排序

-u :去重排序

-t :指定间隔符

-k :设置字段范围

例如

php 复制代码
[root@node1 test]# sort a.txt   --直接排序,不跟选项,默认升序




11
33
44
55
66
[root@node1 test]# sort -u a.txt   --去重排序

11
33
44
55
66
[root@node1 test]# sort -ur a.txt  --去重倒排序
55
44
33
11

五、其他显示命令

1、uniq

uniq命令用于去除文本中连续的重复行,可以和其他命令结合使用。

基本语法

php 复制代码
uniq [选项] 文件名称

例如

php 复制代码
[root@node1 test]# cat a.txt   --原文件内容
aa
aa
aa
cc
cc
aa
dd
dd
gg
kk
[root@node1 test]# uniq  a.txt  --去重查看
aa
cc
aa
dd
gg
kk

2、tr

tr指令从标准输入读取数据,经过替换或者删除后,将结果输出在标准输出。

基本语法

php 复制代码
tr [选项]  set1[set2]

常用选项

-c :反选设定字符,也就是符合set1的部分不做处理,不符合的剩余部分才进行转换。

-d :删除指定字符

-s :缩减连续重复的字符成指定的单个字符。

例如

php 复制代码
[root@node1 test]# cat a.txt | tr a-z A-Z |uniq
AA
CC
AA
DD
GG
KK

六、文本内容

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

基本语法

php 复制代码
wc [选项] 文件名称

常用选项

-l :只显示行数

-w:只显示单词数

-c :只显示字节数

例如

php 复制代码
[root@node1 test]# wc -l a.txt 
10 a.txt
[root@node1 test]# wc -w a.txt 
10 a.txt
[root@node1 test]# wc -c a.txt 
30 a.txt
[root@node1 test]# wc -lw a.txt 

七、复制、移动文件

1、复制文件

基本语法

php 复制代码
cp [选项] 源文件 目标文件

常用选项:

例如

php 复制代码
[root@node1 test]# cp a.txt aa.txt
[root@node1 test]# ls
aa.txt  a.txt

2、移动文件

基本语法

php 复制代码
mv [选项] 源文件名称  目标文件名称

例如

php 复制代码
[root@node1 test]# ls
aa.txt  a.txt  b
[root@node1 test]# mv a.txt ./b
[root@node1 test]# cd b/
[root@node1 b]# ls
a.txt
[root@node1 b]# cd -
/root/test
[root@node1 test]# ls
aa.txt  b

八、查找文件路径

find 命令默认接的命令是-print,它默认以\n将找到的文件分隔。可以使用-print0来使用\0分隔,这样就不会分行了。但是一定要注意,-print0针对的是\n转\0,如果查找的文件本省就含有空格,则find后-print0仍然会显示空格。

基本语法

php 复制代码
find 路径 [选项] 搜索内容 

常用选项:

-name:按照文件名搜索

-iname:按照文件名搜索,不区分文件大小写

-inum:按照inode号搜索

例如

php 复制代码
[root@node1 ~]# find /etc -name "host*"
/etc/host.conf
/etc/hosts
/etc/avahi/hosts
/etc/nvme/hostnqn
/etc/nvme/hostid
/etc/ansible/hosts
/etc/hostname

注:find功能比较强大,可以使用 man find 来进行查看他的其他选项功能。

九、压缩和解压文件

1、zip和unzip

基本语法

php 复制代码
zip [选项] 压缩后的文件名  源文件名  ---压缩
unzip [选项] 文件名  ---解压

zip常用选项:

-数字:指定压缩率

-r :将该目录下的所有文件一起压缩

-m :向压缩文件中添加一个新的压缩文件进去

-d :删除压缩中的某个文件

-x :压缩文件时排除某个文件 ---- zip test.zip *.zip -x test2.txt

例如

php 复制代码
[root@node1 test]# zip b.zip b/
  adding: b/ (stored 0%)
[root@node1 test]# ls
aa.txt  b  b.zip
[root@node1 test]# zip -r c.zip b
b/     b.zip  
[root@node1 test]# zip -r c.zip b
b/     b.zip  
[root@node1 test]# zip -r c.zip b/
  adding: b/ (stored 0%)
  adding: b/a.txt (deflated 27%)
  adding: b/b.txt (deflated 55%)
  adding: b/c.txt (deflated 67%)
  adding: b/d.txt (deflated 71%)
[root@node1 test]# 
[root@node1 test]# 
[root@node1 test]# ls
aa.txt  b  b.zip  c.zip
[root@node1 test]# 
[root@node1 test]# zip -m b.zip aa.txt 
  adding: aa.txt (deflated 27%)
[root@node1 test]# ls
b  b.zip  c.zip

unzip常用选项:

-d :指定解压后存放目录

-v :查看压缩文件目录,不进行压缩

例如

php 复制代码
[root@node1 test]# unzip b.zip
Archive:  b.zip
  inflating: aa.txt      

[root@node1 test]# unzip b.zip -d file
Archive:  b.zip
   creating: file/b/
  inflating: file/aa.txt             
[root@node1 test]# ls
aa.txt  b  b.zip  c.zip  file
[root@node1 test]# cd file/
[root@node1 file]# ls
aa.txt  b

[root@node1 test]# unzip -v b.zip 
Archive:  b.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 09-10-2023 18:32 00000000  b/
      30  Defl:N       22  27% 09-10-2023 18:03 885598db  aa.txt
--------          -------  ---                            -------
      30               22  27%                            2 files

2、gzip和gunzip

基本语法

php 复制代码
gzip [选项] 文件名称  --压缩
gunzip [选项]  文件名称   --解压

gzip常用选项:

-r :压缩该目录下的所有文件

-c : 压缩并且原有文件存在

例如

php 复制代码
[root@node1 test]# ls
aa.txt  b  file
[root@node1 test]# gzip aa.txt 
[root@node1 test]# ls
aa.txt.gz  b  file
[root@node1 test]# gzip -r b/ 
[root@node1 test]# ls
aa.txt.gz  b  file
[root@node1 test]# cd b/
[root@node1 b]# ls
a.txt.gz  b.txt.gz  c.txt.gz  d.txt.gz

还有其他压缩方式类似 bzip2和bunzip2、xz和unxz等

十、tar归档

基本语法

php 复制代码
tar [选项] [args] ......

常用选项

-c :创建.tar格式的包文件

-x :释放.tar格式的包文件

-t :查看包中的文件列表

-f (必选项):用于指定打包文件名,当与-c选项一起使用,创建tar包文件使用该选项指定的文件名;当-x选项一起使用时,则释放该选项指定的tar文件。

-v :标识在命令执行时显示详细提示信息

-p :打包时留文件及目录的权限

-C(大写):和-x选项一起使用,标识释放包时致电给释放的目标路径。

打包时排除某个文件

tar cf 文件名.tar --exculude=路径/文件 路径。

注:此处的路径前后需要保持一致,同一使用绝对路径或相对路径。

例如

创建(非压缩的)打包文件,将指定的一个或多个文件或目录备份生成为一个指定的包文件。

php 复制代码
[root@node1 test]# tar -cvf file.tar
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.
[root@node1 test]# tar -cvf file.tar file
file/
file/b/
file/aa.txt
[root@node1 test]# ls
aa.txt.gz  b  file  file.tar

列出包文件中的文件列表

php 复制代码
[root@node1 test]# tar tf file.tar 
file/
file/b/
file/aa.txt

创建带压缩的包文件,为节省存储空间,通常需要生成压缩格式的tar包文件,tar支持三种不同的压缩方式(.gz、.bz2、.xz)

.gz 对应选项是:czf/-czf

.bz2对应选项是:cjf/-cjf

.xz对应选项是:cJf/-cJf

php 复制代码
[root@node1 test]# tar -czf b.tar.gz b/
[root@node1 test]# ls
aa.txt.gz  b  b.tar.gz  file  file.tar

提取包文件到指定目录

php 复制代码
[root@node1 test]# mkdir test_file
[root@node1 test]# ls
aa.txt.gz  b  b.tar.gz  file  file.tar  test_file
[root@node1 test]# tar -xf b.tar.gz -C test_file/
[root@node1 test]# cd test_file/
[root@node1 test_file]# ls
b

格式如下:
tar xf/-xf/-xzf 文件名.tar.gz [-C 目标路径]
tar xf/-xf/-xjf 文件名.tar.bz2 [-C 目标路径]
tar xf/-xf/-xJf 文件名.tar.xz [-C 目标路径]
相关推荐
007php0073 小时前
linux服务器上CentOS的yum和Ubuntu包管理工具apt区别与使用实战
linux·运维·服务器·ubuntu·centos·php·ai编程
人类群星闪耀时3 小时前
深度学习在灾难恢复中的作用:智能运维的新时代
运维·人工智能·深度学习
djykkkkkk3 小时前
ubuntu编译遇到的问题
linux·运维·ubuntu
LinkTime_Cloud4 小时前
GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily
大数据·运维·gitlab
qq_429856574 小时前
linux 查看服务是否开机自启动
linux·运维·服务器
就爱学编程4 小时前
重生之我在异世界学编程之C语言:数据在内存中的存储篇(下)
java·服务器·c语言
Smile丶凉轩4 小时前
Docker核心技术和实现原理
运维·docker·容器
清风细雨_林木木4 小时前
Docker使用——国内Docker的安装办法
运维·docker·容器
运维&陈同学5 小时前
【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍
运维·后端·elk·elasticsearch·云原生·自动化·kibana·日志收集
7yewh5 小时前
Linux驱动开发 IIC I2C驱动 编写APP访问EEPROM AT24C02
linux·arm开发·驱动开发·嵌入式硬件·嵌入式