Linux文件管理基础(二)

文件处理命令

1、查看文件内容

cat命令

命令:cat

作用:查看文件内容

语法:

# 读取文件内容
cat yuchao666.txt

注意:

cat 命令是一次性把文件内容全部读出来,即使yuchao666.txt文件里有十万条数据,也是全部读取显示.

会有什么问题?

一下你的电脑屏幕输出了十万条数据,首先你压根看不到需要的信息,并且你的机器可能卡死。

因此cat不适合读取大文件,适合阅读内容较少的文件。(当然可以结合其他linux命令,二次加工)

[root@localhost opt]# cat chaoge.txt 
qweqwe

# 读取系统中默认配置文件
# 读取网卡配置文件
[root@localhost opt]# 
[root@localhost opt]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="2f548dc3-8cf4-410d-9cc4-c8bf3394e8dd"
DEVICE="ens33"
ONBOOT="yes"

读取且合并

cat命令可以读取文件内容、结合重定向符号,可以合并多个文件内容。

# 依次读取每一个文件的内容,依次写入all.txt
[root@localhost opt]# cat chaoge.txt hello.txt world.txt > all.txt
[root@localhost opt]# cat all.txt 
chaoge 666
hello
world

more分屏命令

作用:分屏查看文件内容,一般用于读取较多内容文件,如小说文件。

特点:more和cat一样,会一次性读取文件所有内容,放入内存中,比较消耗资源,不适合太大文件。

语法:

more yuchao666.txt

使用more很简单,主要是像学vim一样,进行少量的指令操作。

more 命令的执行会打开一个交互界面,下面是一些常用交互命令:

回车键 向下移动一行。
d 向下移动半页,移动屏幕显示的一半。
space空格 向下移动一页。
b 向上移动一页。
/ 字符串 搜索指定的字符串。
:f 显示当前文件的文件名和行号。
q 或 Q 退出 more。
上下移动 没有该功能

image-20220107100210644

less命令

作用:和more一样,分屏读取文件

特点:不是加载整个文件,而是读多少,加载多少,读取大容量文件是很合适的。

语法:

less yuchao666.txt

和more一样,也需要通过指令控制,也是一个交互界面,指令一样。

回车键 向下移动一行。
d 向下移动半页,移动屏幕显示的一半。
space空格 向下移动一页。
b 向上移动一页。
/ 字符串 搜索指定的字符串。
:f 显示当前文件的文件名和行号。
q 或 Q 退出 more。
方向键 可以上、下移动

cat、more、less对比

cat more less
特点 显示小文件(一屏以内) 显示大文件(超过一屏) 显示大文件(超过一屏)
交互命令 /
上下键翻行 / /

head命令

作用:显示文件前N行

语法:默认显示前10行,可以传入数字参数

head yuchao666.log

案例

# 默认显示
[root@localhost opt]# head num.txt 
1
2
3
4
5
6
7
8
9
10


# 指定行
[root@localhost opt]# head -5 num.txt 
1
2
3
4
5

tail命令(重点)

作用:tail是从结尾看,也可以指定行号,因为是文件结尾,也就是最新的数据,工作里常用来tail查看日志,以及持续检测日志文件内容变化,使用很多。

语法,参数:

# 默认后10行
tail yuchao777.log

# 后4行
tail -4 yuchao777.log

# -f 当文件增长时,输出后续添加的数据
tail -f yuchao777.log

案例

[root@localhost opt]# tail num.txt 
41
42
43
44
45
46
47
48
49
50


# 后4行
[root@localhost opt]# tail -4 num.txt 
47
48
49
50

image-20220107104543047

退出tail -f

使用ctrl + c 快捷键可以退出,表示cancel(取消),大多数linux下的操作,都可以用ctrl + c强制结束。

2、统计文件信息

wc命令

命令:wc(word count)单词统计

作用:用来统计文件内的信息,一般统计如(行数、单词数、字节数)

参数,语法

-l:表示lines,行数(以回车/换行符为标准)

-w:表示words,单词数 依照空格来判断单词数量

-c:表示bytes,   字节数(空格,回车,换行)

用法

image-20220107105043775

增加字符,没有换行

image-20220107105925382

du命令

作用:查看文件或目录(会递归显示子目录)占用磁盘空间大小

语法:du [参数选项] 文件名或目录名

常见参数:

-s :summaries,只显示汇总的大小,统计文件夹的大小

-h:表示以高可读性的形式进行显示,如果不写-h,默认以KB的形式显示文件大小

案例



[root@localhost ~]# echo chaoge{1..5000000} >> num.txt 

# 查看大小的方式 ll -h
[root@localhost ~]# ll /opt/ -h
total 66M
-rw-r--r--. 1 root root 66M Jan  7 11:04 num.txt

# du查看,显示kb单位
[root@localhost ~]# du /opt/num.txt 
67276    /opt/num.txt

# 友好显示
[root@localhost ~]# du  -h /opt/num.txt 
66M    /opt/num.txt

# 显示文件大小总和
[root@localhost opt]# ll -h
total 198M
-rw-r--r--. 1 root root 66M Jan  7 11:04 num.txt
-rw-r--r--. 1 root root 66M Jan  7 11:09 num.txt.1
-rw-r--r--. 1 root root 66M Jan  7 11:09 num.txt.2

# 方式一
[root@localhost opt]# du -sh /opt/
198M    /opt/

# 方式二
[root@localhost opt]# du -sh .
198M    .

# kb单位
[root@localhost opt]# du -s .
201828    .

image-20220107110733945

image-20220107111210243

1.工作里,经常可能会因为某些文件过大,导致磁盘空间不够

2.比如长时间机器运行,生成了过多的日志,也需要定期+删除,释放磁盘空间。

[root@localhost opt]# du -sh /var/log
8.2M    /var/log

批量统计,文件大小

[root@localhost opt]# du -h *
66M    num.txt
66M    num.txt.1
66M    num.txt.2

3、文件查找

find命令(重点)

作用:用于搜索整个linux系统中的文件、文件夹,便于你找出机器上的文件。

语法:

find 搜索路径  选项1 选项1的值       选项2 选项2的值  

find 在哪找  找什么

find命令参数特别多,我们逐步深入学习,先了解最常用的参数。

-name  指定文件名字,指定你要搜索的文件名字叫什么
        以及可以填入 * 表示通配符,模糊搜索

-type  指定文件类型,文件还是文件夹,还是其他
        一般的值有 f(file)找文件类型,d(directory) 文件夹类型


-o 或者的意思

# 找出来系统中,所有的txt文件,并且数一数多少个?
root@yc-ubuntu:~# find / -name '*.txt'   | wc -l
find: ‘/run/user/1000/doc’: 权限不够
find: ‘/run/user/1000/gvfs’: 权限不够
1087


# 在 /etc目录下,看看是否有txt文件,且数一数
root@yc-ubuntu:~# find /etc -name '*.txt' |wc -l
18

简单用法

小范围搜索、找出yu.txt

image-20220107113934662


大范围搜索,从根目录搜索,找出yu3.txt

image-20220107114054789


限定搜索文件的类型,加上-type参数

image-20220107114532523

root@yc-ubuntu:~# find / -name 'yu.txt'
/var/log/yu.txt
/yu.txt
find: ‘/run/user/1000/doc’: 权限不够
find: ‘/run/user/1000/gvfs’: 权限不够
/tmp/yu.txt



find 从哪找  -name 找什么文件名字 -type 什么类型?  -print 什么动作?


find / -name 'yu.txt'  -ls
# 搜索文件类型,不是目录
find /  -type f -name 'yu.txt'   -ls

find /  -type d -name 'yu.txt'   -ls

# find找出来文件,并且重命名

复杂用法

上面都是精确查找,找出xx文件,还可以模糊查找,比如,找出linux上所有的.txt后缀的文件。


全系统搜索,模糊搜索,找出系统里的txt文件,注意得有类型限制

image-20220107114830509


加上类型限制,找出系统上所有txt文件。

image-20220107115105133


同理,找出系统上所有log类型,日志文件

image-20220107115543079

找出某个路径下,所有的文件夹

image-20220107115724955

找出某个路径下,所有的文件

[root@localhost opt]# find /opt -type f

find综合用法

find . -name "example.txt".   # 某个路径下,查找具体文件名
find / -name "*.jpg"         # 查找系统下的jpg
find . -type d # 查找目录
find . -type l -ls   #递归深层查找所有的link文件
find . -type f 
# modify time 修改时间

# -mtime  7  正好第七天被修改过
# -mtime  -7 7天内被修改过
# -mtime  +7 超过7天被修改


find /var -type f -mtime -3  -ls  # 查找当前目录及其子目录下最近 3 天内修改过的文件
find . -mtime 7 # 查找当前目录及其子目录下正好 7 天前修改过的文件
find . -mtime +7 # 查找当前目录及其子目录下,超过 7 天前修改过的文件

# 根据文件大小搜索
# 系统中搜索大文件,磁盘清理,超过100M单文件
find /home -type f -size +100M


find . -name "*.log" -size +1024k -mtime +5


find . -name "*.bak" -exec rm -f {} \;



find . -name "*.txt" -exec chmod 644 {} \;

4、文件内容查找

grep命令(重要)

我们很多时候,想直接搜索文件中的一些信息,前面学了可以使用如vim的搜索功能,但是多少不太方便,你还得打开文件。

比如你要搜索某一个配置文件,里面是否写入了一个配置参数,如bind 0.0.0.0

那就可以利用grep找一找,文件中是否有bind 0.0.0.0这个信息。

grep作用:直接在文件中搜索出你想要的数据,且显示。 语法,用法

grep '查找的内容' yuchao666.txt

准备用于测试的数据

[root@localhost opt]# cat yuyu.txt 
I teach linux.

I like python.

My qq is 877348180.

My name is chaoge.

Our school website is http://yuchaoit.cn。

Where is my girl friend.

Who is your boy friend.
My phone number is 15233334444.

基本用法

查找哪些文本行包含了 My,注意是linux是严格区分大小写的

大写字母

image-20220107121537435

小写字母

image-20220107133129380

搜索系统日志文件

image-20220107135319519

在多个文件中,搜索信息

image-20220107135613563

忽略大小写 -i参数

image-20220107135956110

5、输出重定向

命令:输出重定向,表示linux下的两个符号

> 标准输出重定向。覆盖输出,覆盖掉原先的文件内容

>> 追加重定向,追加输出,不会覆盖原先文件内容,会在文件末尾追加内容


怎么记忆
6>5   6大于5

> 输出覆盖重定向 ,一个大于号
>> 追加输出重定向,俩大于号

语法:

用法1:
命令1 > 覆盖输出结果

用法2:
命令2 >> 追加输出结果

覆盖输出重定向

命令执行多次,结果反复被覆盖。

追加输出重定向,俩大于号

5.1 echo命令

echo命令,用于打印、显示文本

用法很简单,对文本输出

[root@localhost opt]# echo 'chaoge 666'
chaoge 666
[root@localhost opt]# 
[root@localhost opt]# echo chaoge linux 666
chaoge linux 666

5.2 echo结合重定向

echo 一般用于把文本信息,写入到文件中(可自动创建文件)

image-20220107142334092


看图回答

image-20220107142415301

Copyright © www.yuchaoit.cn 2025 all right reserved,powered by Gitbook作者:于超 2025-02-17 15:26:53

results matching ""

    No results matching ""