Linux文件管理与查询
发表于:2025-07-30 | 分类: Linux

一、文件目录结构

image-20250730185530721

系统目录 目录说明 作用 特点 常见子目录
/etc 系统配置目录 存储全局配置文件(如 /etc/passwd/etc/hostname),修改需管理员权限 /etc/passwdd :用户账户信息。 /etc/yum.repos.d:用于存储 YUM/DNF 软件包管理器的仓库配置文件(扩展名为 .repo),定义软件包的下载来源、验证规则等。
/boot 系统启动目录 包含启动文件(如内核 vmlinuz、引导加载程序 GRUB 配置),直接影响系统启动 关键文件:vmlinuz-* :Linux 内核文件。initrd.img-* :初始内存盘镜像。/boot/grub :GRUB 引导程序配置。
/sbin 系统命令目录 存放系统管理命令(如 fdiskreboot),需 root 权限执行,用于系统维护 1.普通用户默认无权执行(需 sudo )。 2.命令多涉及系统配置和维护。 /sbin/service、 /sbin/ifconfig、 /sbin/reboot
/bin 系统命令目录 存放基础命令(如 lscpcat),所有用户均可使用,系统启动或单用户模式依赖这些命令 1.单用户模式(维护模式)下也可使用 2.命令多为系统运行必需的核心工具。 常见命令:/bin/ls 、/bin/cp
/root 用户家目录 超级用户(root)的家目录 1.默认只有 root 用户可访问。 2.存放 root 的配置文件(如 .bashrc )。
/home 用户家目录 存放普通用户的家目录 1.每个用户对应一个子目录(如 /home/student )。2.用户对其家目录有完全控制权。
/var 动态数据目录 存放运行时可变数据(如日志、数据库、邮件)。 /var/logg :系统和服务日志(如 syslog 、 nginx/access.log )。 /var/lib :应用程序数据(如 MySQL 数据库 /var/lib/mysql )。 /var/log/secure :安全认证日志(如 SSH 登录记录)。
/tmp 动态数据目录 存放临时文件(进程或用户手动创建)。 1.全局可读写(权限为 drwxrwxrwt )。 2.系统重启或定期清理时会自动删除文件。
/usr 系统资源目录 存放系统核心程序、库和文档(类似 C:\Windows )。 /usr/bin :用户命令(如 gcc 、 python )。 /usr/lib :库文件(如 .so 动态库)。
/usr/local 系统资源目录 存放用户手动编译安装的软件(类似 C:\Program Files )。 避免与系统包管理器(如 apt 、 yum )安装的软件冲突。

1. 系统核心目录

/bin:存放基础命令(如 lscpcat),所有用户均可使用,系统启动或单用户模式依赖这些命令

/sbin:存放系统管理命令(如 fdiskreboot),需 root 权限执行,用于系统维护

/boot:包含启动文件(如内核 vmlinuz、引导加载程序 GRUB 配置),直接影响系统启动

/etc:存储全局配置文件(如 /etc/passwd/etc/hostname),修改需管理员权限


/etc 下的目录

  • /etc/yum.repos.d

**作用:**用于存储 YUM/DNF 软件包管理器的仓库配置文件(扩展名为 .repo),定义软件包的下载来源、验证规则等。

核心功能:

1.模块化管理:每个 .repo文件可独立配置一个或多个软件仓库,避免直接修改主配置文件(如 yum.conf

2.仓库属性定义:包括 baseurl(仓库路径)、gpgcheck(签名验证)、enabled(启用状态)等,支持变量如 $releasever(系统版本)

  • /etc/sysconfig

作用:集中存放 系统级和服务级的配置文件,主要用于 Red Hat 系发行版(如 CentOS、RHEL)

核心功能

​ 1.网络配置:如 /etc/sysconfig/network-scripts/ifcfg-eth0定义网卡 IP、网关等

​ 2.服务管理:例如 /etc/sysconfig/httpd配置 Apache 服务的启动参数

​ 3.硬件与国际化:如 /etc/sysconfig/i18n设置系统语言环境

  • /etc/selinux

作用:存储 SELinux(安全增强型 Linux)的配置文件,实现强制访问控制(MAC)机制。

核心功能

​ 1.运行模式配置:通过 /etc/selinux/config设置模式(enforcingpermissivedisabled

​ 2*.策略管理*:如 /etc/selinux/targeted/policy/存放预编译的安全策略二进制文件

​ 3*.安全上下文*:/etc/selinux/targeted/contexts/定义文件、进程的访问权限规则

  1. 网络配置:

    1
    /etc/sysconfig/metwprk-scripts/ifcfg-ens192 #网卡配置文件(ens192替换为实际网卡名)
  2. SELinux配置:

    1
    /etc/selinux/config #SELinux 模式(enforcing、permissive、disabled)
  3. YUM/DNF配置:

    1
    /etc/yum.repos.d/CemtPS-Base.repo #软件源配置

2. 用户与数据目录

用户家目录:

/home:普通用户的主目录,每个用户拥有独立子目录(如 /home/user1),存放个人文件与配置

/root:root 用户的专属主目录,与普通用户隔离,便于紧急维护

数据目录:

/var:存放动态数据,如日志(/var/log)、网站数据(/var/www),需定期清理以防磁盘占满

/tmp:临时文件目录,重启后自动清空,适合短期存储


3. 设备与挂载目录

设备目录:

/dev:设备文件(如 /dev/sda表示硬盘),Linux 将硬件抽象为文件便于操作

挂载目录:

/mnt:手动挂载外部设备(如 U 盘、网络存储)的临时目录

/media:系统自动挂载可移动设备(如光盘、USB)的默认位置


4. 软件与库目录

/usr

用户级应用程序与资源,包含子目录:

/usr/bin:非核心命令(如 gcc)。

/usr/lib:共享库文件。

/usr/local:本地编译安装的软件

/opt:第三方软件(如 Oracle、大型工具)的安装目录,避免干扰系统文件


5. 虚拟与特殊目录

/proc虚拟文件系统,实时反映内核与进程信息(如 /proc/cpuinfo显示 CPU 详情)

/sys另一虚拟文件系统,提供硬件设备与内核参数的交互接口

/lost+found文件系统修复(如 fsck)后,恢复的碎片文件存放处,需 root 访问


6. 其他重要目录

/lib/lib64存放系统库文件(32 位与 64 位),支持 /bin/sbin中的命令

/srv服务数据目录(如 Web 服务器的 /srv/www),集中管理服务相关文件

二、文件管理

文件管理命令

1.touch-创建空文件

用途:创建新文件或更新文件时间戳。

语法:

1
touch 文件名

示例:

1
2
touch file.txt # 创建空文件
touch file1.txt file2.txt # 批量创建

2.mkdir-创建目录

用途:创建新目录

语法:

1
mkdir [选项] 目录名

常用选项:

1
2
mkdir dir1			# 创建单层目录
mkdir -p dir1/dir2 # 递归创建嵌套目录(自动补全父目录)

3.rm-删除文件或目录

用途:删除文件或目录(慎用!)。

语法:

1
rm [选项] 文件或目录

常用选项:

1
2
3
rm file.txt # 删除文件
rm -r dir/ # 递归删除目录及其内容
rm -f file.txt # 强制删除(不提示确认)

[!WARNING]

警告: rm -rf / 会删除整个系统,切勿尝试!

4.cp - 复制文件或目录

用途:复制文件或目录到指定位置。

语法:

1
cp [选项] 源文件 目标路径

常用选项:

1
2
3
4
cp file.txt backup/ # 复制文件到目录
cp -r dir1/ dir2/ # 递归复制目录
cp -f dir1 dir2 #强制复制
cp -i file.txt backup/ # 覆盖前提示确认

5.mv - 移动或重命名文件

用途:移动文件或目录,或修改名称

语法:

1
mv 源文件 目标路径或名称

示例:

1
2
mv old.txt new.txt # 重命名文件
mv file.txt /backup/ # 移动文件到目录

6.ls

常用选项:

1
2
3
4
ls -a 显示隐藏文件
ls -l 长格式显示
ls -h 人类可读的文件大小
ls -R 递归显示子目录

7.查询命令(cat less tail grep find

(1)cat

用途:

用于快速查看、合并或创建文件内容。适合小文件,直接将内容输出到终端,无交互功能

语法:

1
2
3
cat filename # 查看文件内容
cat file1 file2 # 同时显示多个文件内容
cat file1 file2 > merged_file # 合并文件

常用选项:

1
2
3
4
cat -n 文件名 #显示行号(包括空行)
cat -b 文件名 #显示行号(忽略空行)
cat -s 文件名 #压缩连续空行为1行
cat -E 文件名 #在行尾显示$符号
(2)less

用途:

提供用户交互式地滚动浏览文件。在 less 环境下,可以使用方向键或 Page Up/Page Down 键来滚动浏览文件。按 q 键可以退出less

语法:

1
less filename

常用选项:

1
2
3
4
less -N:显示行号
less -m:显示更详细的提示信息 (进度%)
less -E:在文件结束后自动退出
less -S:禁用自动换行
(3)tail

用途:

用于查看文件末尾内容,默认显示最后10行。常用于实时监控日志更新。

语法:

1
2
tail filename  	# 显示文件最后10行
tail -n 20 filename # 显示文件最后20行

常用选项:

1
2
tail -n 文件 #指定显示的行数
tail -f 文件 #实时追踪文件变化(常用于监控日志)

8.grep核心知识点

1.基础语法
1
grep [选项] "模式" [文件...]
2.grep常用选项
选项 说明
-i 忽略大小写
-o 仅输出匹配内容
-w 精确匹配
-r 递归搜索
-n 统计行号
-c 统计行数
-v 反向匹配(排除模式)
-A N 显示匹配行及匹配后N行
-B N 显示匹配行及匹配前N行
3.正则表达式
(1)基础正则表达式
符号 说明
. 匹配任意单个字符
^ 匹配行首
$ 匹配行尾
[abc] 匹配括号内任意字符
[^abc] 排除括号内字符
***** 重复前一个字符0次或多次
(2)扩展正则表达式
符号 说明
+ 前一个字符重复1次或多次
前一个字符重复0次或1次
{n,m} 前一个字符重复n到m次
| 逻辑或

补充:

#grep常用场景速查
场景 命令示例
快速定位错误 grep -n “ERROR” file
统计日志关键词频率 grep -c “pattern” file
提取结构化数据 grep -Eo “正则表达式” file
日志上下文分析 grep -C3 “Exception” file
注意事项

转义特殊字符:如 $ 、 * 需用 \ 转义。

9.find核心知识点

1.基础语法
1
find [搜索路径]  [匹配条件] [执行动作]

搜索路径:默认为当前目录( . ),可指定绝对或相对路径。

匹配条件:按名称、类型、大小、时间等过滤文件。

执行动作:对匹配文件执行操作(如删除、输出路径)。

2.常用匹配条件
(1)按名称或路径匹配
条件 说明
-name 按文件名匹配(区分大小写)
-iname 按文件名匹配(不区分大小写)
-path 按路径匹配
(2)按文件类型匹配
条件 说明
-type f 仅匹配普通文件
-type d 仅匹配目录
-type l 仅匹配符号链接
(3)按文件大小匹配
条件 说明
-size +10M 找到大于 10MB 的文件
-size -1G 找到小于 1GB 的文件
-size 0 找到所有空文件
(4) 按时间戳匹配
条件 说明
-mtime -7 (modify time 记录修改时间) 7 天内修改过的文件
-atime +30 30 天前访问过的文件
-newer file 比指定文件更新的文件
(5) 按权限匹配
条件 说明
-perm 644 权限精确为 644 的文件
-perm /u=x 用户有执行权限的文件
3.逻辑操作符

[^find实验 :忽略特定目录 -o用法]:

操作符 说明
-a 逻辑与
-o 逻辑或
逻辑非
4.执行动作

[^find实验:搜索并压缩文件 -exec命令]:

动作 说明
-print 输出文件路径(默认动作)
-delete 删除匹配的文件
-exec 执行自定义命令
-ok 交互式执行命令(需确认)
#常用场景速查
场景 命令示例
清理临时文件 find /tmp -type f -mtime +7 -delete
查找大文件 find / -size +100M -exec ls -lh {} ;
批量重命名 find . -name “*.old” -exec mv {} {}_new ;
按内容搜索 find . -type f -exec grep “pattern” {} ;
注意事项:

1.谨慎使用 **-**delete :建议先运行 -print 确认文件列表

2.处理特殊字符:使用 -print0 和 xargs -0 避免文件名问题:

1
find . -name "*.txt" -print0 | xargs -0 rm
#文件类型及标识符
类型(标识符) 特点 示例 标识符
普通文件(-) 存储文本、二进制数据(如脚本、图片、可执行程序) /home/user/file.txt (在find命令类型中使用f查找普通文件) ls -l输出首字符为 -
目录文件(d) 用于组织其他文件或子目录,本质是文件名与 inode 的映射表。 /etc/home ls -l输出首字符为 d
符号链接(l) 软链接(快捷方式),指向另一个文件或目录;删除链接不影响原文件。 /usr/bin/python -> python3 ls -l输出首字符为 l
设备文件(b、c) 如硬盘(/dev/sda),数据按块读写。 如键盘(/dev/tty),数据按字符流读写 ls -l输出首字符为 bc
管道文件(p) 命名管道(FIFO),用于进程间通信。 通过 mkfifo创建 ls -l输出首字符为 p
套接字文件(s) 用于网络或本地进程通信(如 MySQL 套接字)。 /var/run/mysqld/mysqld.sock ls -l输出首字符为 s
#文件类型的操作命令
创建文件 删除文件
普通文件 touch file.txt rm file.txt
目录 mkdir mydir rm -r mydir (-r表示递归删除,不加-r无法删除非空目录)
链接文件 ln -s /path/to/original link_name rm link_name

实验:grep命令

1.基本用法
1
2
3
grep -i "error" test # "匹配内容" test:进行匹配的文件名
grep -vi "error" test #-vi 实际等于 -v和-i
#-v是排除匹配内容

image-20250730111821301

1
2
3
4
grep -ni "info" test # -n:匹配行的行号
grep -c "ERROR" test #-c: 包含匹配内容的行的行数
grep -w "ERROR" test #-w: 精准匹配内容
grep -o "ERROR" test #-o: 只输出匹配的内容

image-20250730112131312

1
2
grep -A 3 "ERROR" test #-A 3: 匹配ERROR行的后三行 
#图片第二个ERROR可以看出匹配后三行时如果还没有到三行有匹配到下一个ERROR字段行会直接匹配下一个

image-20250730113016373

1
grep -B 3 "ERROR" test #-B 3: 匹配ERROR行的前三行

image-20250730172119405

1
grep -C 3 "ERROR" test #-C 3: 匹配ERROR行的前后各三行

image-20250730171942470

1
grep -r/R "config" /etc #-r:递归查询目录下的包含config字段的文件

image-20250730171855595

2.提取ip地址
1
2
3
4
5
grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" test
#-E
#[0-9]匹配数字0-9任意一位 {1,3}匹配1到3位即可 即:xxx.
#([0-9]{1,3}\.):xxx.{3} (xxx.)×3次 即:xxx.xxx.xxx.
#接下来再匹配最后一组数字[0-9]{1,3} 匹配1到3位的数字 即:xxx

image-20250730171811638image-20250730171827634

3.提取邮箱地址
1
2
3
4
5
6
7
8
9
grep -Eio "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z]{2,}\b" practice.txt
# 输出 user_john@example.com
邮箱地址:xxxxxxxx@xxx.xx
#[A-Za-z0-9._%+-]:允许字母、数字、.、-;
#+:至少 1 次。 也可用{1,}
#\b:单词边界,确保匹配的是独立邮箱(避免匹配user@example.com.cn.xxx 中的部分)。
#-E:拓展正则表达式
#-i:忽略大小写
#-o:仅匹配筛选内容

image-20250730132943417

4.查找金额记录
1
grep '\$' test

image-20250730133713831

实验:find命令

完成练习实验目录的创建

1
2
3
4
5
mkdir -p ~/find-practice/{logs,data,backup}
touch ~/find-practice/logs/{app.log,error.log}
touch ~/find-practice/data/{file1.txt,file2.csv,image.jpg}
mkdir ~/find-practice/backup/old
touch ~/find-practice/backup/old/archive.tar.gz

image-20250730163135266

1.基本用法
(1)常用匹配条件
  • 按文件名称搜索
1
2
find ~/find-practice -name "*.log
#输出所有路径下的.log文件路径

image-20250730163439414

  • 按文件类型搜索
1
2
3
find /root/find-practice -type d #查找目录文件
find /root/find-practice -type l #查找链接文件
find /root/find-practice -type f #查找普通文件

image-20250730170552821

  • 组合条件(名称与大小)

要求:查找大于10k且以.jpg结尾的文件

1
find /root/find-practice -name "jpg" -size +10k #查找大于10k且以.jpg结尾的文件

image-20250730171126446

(2)时间与权限过滤
  • 要求:查找1天内修改过的文件
1
find ~/find-practice -mtime -1

image-20250730211511729

  • 排除特定权限文件

要求:查找权限不是 644 的文件

rwx

421

1
find ~/find-practice ! -perm 644

image-20250730211817641

(3)执行动作
  • 删除所有空文件
1
find ~/find-practice -size 0 -delete #删除操作尽量不要做
  • 修改权限

要求:.sh结尾的文件权限修改为755

1
2
3
#{}:提权的文件 \;转义为(;)结束命令
find ~/find-practice/ -name "*.sh" -exec chmod 755 {} \;
find ~/find-practice/ -name "*.sh" | chmod 755 {}
  • 搜索并压缩文件

要求:搜索.log文件,打包为logs.tar.gz

1
2
3
4
5
6
7
8
9
find ~/find-practice/ -name "*.log" -exec tar logs.tar.gz {} \;
find ~/find-practice/ -name "*.log" -exec tar logs.tar.gz {} +

+:批量处理参数
tar:压缩文件 tar -czvf 压缩的名称 压缩的文件
-c:创建新压缩包
-z:用gzip压缩
-v:显示处理过程
-f:指定压缩名称
(4)高级技巧
  • 忽略特定目录

要求:查找所有txt文件,跳过backup目录

理论上是先跳过 再查找 因此跳过写在前面

1
2
3
4
5
6
7
8
find ~/find-practice/ ! -path "*/backup" -prune -o -name "*.txt" -print
# ! -path 排除匹配路径
没有-o: 系统会找不是backup目录且为.txt的文件
有-o: 系统匹配到不是
!:非,否
-path:路径
-prune:排除匹配选项
-o:或

注意-prune必须与 -path-o配合使用,且顺序不可调换

  • 结合xargs处理文件

要求:移动所有 .csv 文件到 data 目录

1
2
3
4
find ~/find-practice -name "*.csv" | xargs -I {} mv {} ~/find-practice/data/

#可用-exec代替
find /root/find-practice/ -name "*.csv" -exec mv {} /root/find-practice/ \;

-exec可以直接传递参数并处理文件,适合安全性要求高操作复杂的场景,而 xargs更适合批量处理大量文件以提升性能。两者可根据需求灵活选择,甚至组合使用(如 find -exec sh -c嵌套 xargs

xargs:

image-20250731164304856

exec:

image-20250731164054114

上一篇:
OSPF实验基本配置步骤
下一篇:
CentOS8 的安装