当前位置:首页 > 技术 > 正文内容

Linux命令实战笔记:文件操作与磁盘管理核心技巧

访客 技术 2026年6月21日 1

文件类型识别与链接操作

file命令详解

file命令用于判断文件的实际类型和编码格式,其基本用法为:

file 目标文件
# 输出示例
example.txt: ASCII text

常用选项包括:
- -b:仅显示文件类型,不包含文件名
- -i:输出MIME类型信息(如text/plain; charset=utf-8
- -F:自定义文件名与类型之间的分隔符,避免在文本处理时与冒号冲突
- -L:查看符号链接指向的实际文件信息
- -f:从指定文本文件中读取文件列表,批量检测文件类型
- -z:检查压缩包内部的原始文件信息

ln链接管理

Linux链接分为硬链接和软链接。硬链接共享相同的inode,修改任一文件都会同步;软链接则存储目标文件的路径。

创建链接:

# 硬链接(共享同一数据块)
ln 源文件 链接名

# 软链接(类似快捷方式)
ln -s 源文件 链接名

# 查看inode号确认链接关系
ls -i 文件名

硬链接的限制:
1. 不能跨文件系统
2. 普通用户无法对目录创建硬链接(防止目录循环引用)

使用ls -l可查看文件链接数,第二列数字表示链接数量:

ls -l 文件名
-rw-r--r-- 2 user group 123 Aug 10 10:00 example.txt

当需要对已存在的软链接重新定义时,使用ln -snf强行覆盖。对于目录软链接的重复定义,-n选项可以避免在目录下生成嵌套循环。

文件搜索与筛选

find基础用法

find命令提供了强大的文件搜索能力,语法格式:

find [搜索路径] -name "文件名模式"

常用选项:
- -type:按类型过滤(d目录,f普通文件,l符号链接等)
- -regex:使用正则表达式匹配路径
- -user/-group:按所有者或所属组搜索
- -perm:按权限搜索(如-perm 755
- -exec:对找到的每个文件执行特定命令,使用{}代表文件,以\;结尾
- -maxdepth:限制搜索目录深度

实例:删除一天前的mysql二进制日志

find . -regex 'binlog\.[0-9]+' -a -mtime +1 -exec rm -f {} \;

按时间搜索

时间参数含义:
- amin/cmin/mmin:按分钟计访问/状态变化/修改时间
- atime/ctime/mtime:按天计

# 最近10分钟内修改的文件
find -mmin -10

# 超过2天未访问的文件
find -atime +2

# 比指定文件更新修改的文件
find -newer ref_file

高级用法:-newerXY比较不同文件的时间属性

# 查找访问时间比ref_file修改时间更新的文件
find -neweram ref_file

# 查找访问时间晚于指定时刻的文件
find -newerat '2024-01-01 00:00:00'

按文件大小搜索

# 大于50MB的文件
find -size +50M

# 小于1KB的文件
find -size -1k

# 精确等于100MB的文件
find -size 100M

单位说明:c表示字节,w表示2字节字,b表示512字节块,k/M/G分别对应千字节、兆字节、吉字节。

逻辑运算与正则

多个条件组合:
- !expr:取反
- expr1 -a expr2:逻辑与(默认行为)
- expr1 -o expr2:逻辑或
- \( expr \):提高优先级,括号需转义

正则匹配需指定类型:

# 使用posix-extended正则
find -regextype posix-extended -regex '.*\.(txt|md)$'

磁盘空间分析与文件压缩

du命令实战

du是检查磁盘占用空间的核心工具:

# 人类可读格式
du -sh 目录/

# 显示当前目录下各子项的占用,按大小排序
du -sh * | sort -hr

常用参数:
- -s:只显示总计
- -c:在末尾显示总量
- -d:控制目录深度(如-d 1
- --exclude:排除匹配模式

注意:du显示的是磁盘占用块大小,而ls -l显示的是文件逻辑大小。对于稀疏文件,ls显示的大小可能远大于du实际占用量。

文件压缩工具集

gzip基础:

# 压缩(自动删除源文件)
gzip 文件1 文件2

# 解压
gzip -d 文件.gz

# 保留源文件
gzip -c 源文件 > 输出.gz

tar配合压缩:

# 打包并压缩
tar -czvf 输出.tar.gz 文件1 目录1

# 解包(自动识别压缩格式)
tar -xzvf 包.tar.gz

# 仅解压包中的特定文件
tar -xzvf 包.tar.gz 指定路径文件

参数说明:-c创建包,-x解包,-z调用gzip,-j调用bzip2,-v显示过程,-f指定文件名(需放在最后)。

压缩级别控制:

# gzip:-1到-9,默认-6
gzip -9 大文件

# bzip2:比gzip压缩率更高的替代方案
bzip2 文件
bunzip2 文件.bz2

# zip:保留源文件且支持目录
zip -r 压缩包.zip 源目录
unzip -d 目标目录 压缩包.zip

dd命令的高级应用

数据备份与恢复

# 完整备份磁盘
dd if=/dev/sda of=/data/sda.img

# 备份分区
dd if=/dev/sda2 of=/data/sda2.img bs=4K

# 备份MBR(主引导记录,共512字节)
dd if=/dev/sda of=/data/mbr_backup.img count=1 bs=512

# 从备份文件恢复
dd if=/data/sda.img of=/dev/sdb

结合压缩:

# 备份并压缩
dd if=/dev/sda | gzip > /data/sda.img.gz

# 恢复压缩备份
gzip -dc /data/sda.img.gz | dd of=/dev/sdb

性能测试与清理

# 测试写性能(向磁盘写入1GB数据)
dd if=/dev/zero of=/tmp/test_file bs=1M count=1024

# 测试读性能
dd if=/tmp/test_file of=/dev/null bs=64k

# 使用随机数据覆盖磁盘(安全擦除)
dd if=/dev/urandom of=/dev/sda
标签: Linuxfinddu

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。