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。 |
| 上下移动 | 没有该功能 |

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

退出tail -f
使用ctrl + c 快捷键可以退出,表示cancel(取消),大多数linux下的操作,都可以用ctrl + c强制结束。
2、统计文件信息
wc命令
命令:wc(word count)单词统计
作用:用来统计文件内的信息,一般统计如(行数、单词数、字节数)
参数,语法
-l:表示lines,行数(以回车/换行符为标准)
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes, 字节数(空格,回车,换行)
用法

增加字符,没有换行

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 .


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实战案例
当涉及到使用 find 命令时,以下是一些实战案例:
按文件名搜索:
搜索指定文件名
find /path/ -name 'file-name'在特定目录中搜索文件名包含特定关键词的文件: 通配符
find /path/to/search -name "*keyword*"示例:在当前目录下搜索所有以 .txt结尾的文件:
find . -name "*.txt"
按文件类型搜索:
查找特定类型的文件,例如文本文件、目录等:
find /path/to/search -type f # 查找普通文件 find /path/to/search -type d # 查找目录示例:在 /var/log目录中查找所有日志文件:
find /var/log -type f
按文件大小搜索:
查找特定大小的文件:
find /path/to/search -size +10M # 查找大于10MB的文件 find /path/to/search -size -1M # 查找小于1MB的文件示例:在 /home目录中查找大于100MB的文件:
find /home -size +100M
组合搜索条件:
可以将多个条件组合起来进行搜索:
find /path/to/search -name "*.txt" -size +1M示例:在 /var/log目录中查找大小在1MB以上的以 .log结尾的文件:
find /var/log -name "*.log" -size +1M
执行操作:
find命令可以与 -exec参数结合,对搜索到的文件执行操作,如删除、移动等。
find /path/to/search -name "keyword" -exec rm {} \;示例:删除 /tmp目录下所有 .tmp结尾的临时文件:
find /tmp -name "*.tmp" -exec rm {} \;
这些实战案例可以帮助你更好地理解 find 命令的用法,并在实际工作中提高效率。记得在操作时小心,避免误删重要文件。
find根据时间找文件
当使用 find 命令根据时间找文件时,你可以使用 -mtime、-ctime 和 -atime 参数。这些参数用于按照修改时间、创建时间和访问时间来搜索文件。以下是一些实战案例:
按修改时间搜索文件:
查找在过去 n 天内修改过的文件:
find /path/to/search -mtime -n # 搜索过去7天被修改的文件 find /var -type f -size +10M -mtime -7 -ls查找在过去 n 天内修改并且大小超过 10MB 的文件:
find /path/to/search -mtime -n -size +10M
按创建时间搜索文件:
查找在过去 n 天内创建的文件:
find /path/to/search -ctime -n
按访问时间搜索文件:
查找在过去 n 天内访问过的文件:
find /path/to/search -atime -n
组合时间条件:
可以组合多个时间条件进行搜索:
find /path/to/search -ctime -n -mtime -n
按分钟精度搜索:
如果你需要按分钟来搜索文件,可以使用 -mmin、-amin和 -cmin参数,类似于 -mtime、-atime和 -ctime。
find /path/to/search -mmin -30
以上是一些 find 命令在时间维度上搜索文件的案例。你可以根据自己的需求和场景来调整时间参数,并结合其他条件进行搜索。
find命令(重点)
作用:用于搜索整个linux系统中的文件、文件夹,便于你找出机器上的文件。
语法:
find 搜索路径 选项1 选项1的值 选项2 选项2的值
find命令参数特别多,我们逐步深入学习,先了解最常用的参数。
-name 指定文件名字,指定你要搜索的文件名字叫什么
以及可以填入 * 表示通配符,模糊搜索
-type 指定文件类型,文件还是文件夹,还是其他
一般的值有 f(file)找文件类型,d(directory) 文件夹类型
-o 或者的意思
[root@yuanlai-0224 ~]# find /var -name '*.txt' -o -name '*.log'
/var/log/tuned/tuned.log
/var/log/audit/audit.log
/var/log/anaconda/anaconda.log
/var/log/anaconda/X.log
/var/log/anaconda/program.log
/var/log/anaconda/packaging.log
/var/log/anaconda/storage.log
/var/log/anaconda/ifcfg.log
/var/log/anaconda/ks-script-QsGz2Q.log
/var/log/anaconda/ks-script-e5LS4J.log
/var/log/anaconda/journal.log
/var/log/boot.log
/var/log/vmware-vmsvc.log
/var/log/yum.log
/var/cache/yum/x86_64/7/base/mirrorlist.txt
/var/cache/yum/x86_64/7/timedhosts.txt
/var/cache/yum/x86_64/7/extras/mirrorlist.txt
/var/cache/yum/x86_64/7/updates/mirrorlist.txt
简单用法
小范围搜索、找出yu.txt

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

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

复杂用法
上面都是精确查找,找出xx文件,还可以模糊查找,比如,找出linux上所有的
.txt后缀的文件。
全系统搜索,模糊搜索,找出系统里的txt文件,注意得有类型限制

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

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

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

找出某个路径下,所有的文件
[root@localhost opt]# find /opt -type f
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是严格区分大小写的
大写字母

小写字母

搜索系统日志文件

在多个文件中,搜索信息

忽略大小写 -i参数

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 一般用于把文本信息,写入到文件中(可自动创建文件)

看图回答
