Linux 文件操作命令全解析:从创建到管理的完整指南
文件操作是 Linux 系统管理的核心内容,涉及创建、删除、查看、复制、移动等一系列操作。本文将详细介绍 Linux 中常用的文件操作命令,包括 touch、rm、cat、cp、mv 等,帮助你熟练掌握文件管理的各种技巧。
创建文件:touch 命令
touch 命令主要用于创建空文件,同时也能修改文件的时间戳(访问时间、修改时间)。
基本用法
1 | touch [选项] 文件名 |
常用选项与示例
- 创建空文件:
1 | # 创建单个文件 |
修改文件时间戳:
-a:仅修改访问时间(文件被读取的时间)。-m:仅修改修改时间(文件内容被修改的时间)。-d "时间":指定时间(如2023-10-01 12:00)。-r 参考文件:将目标文件的时间同步为参考文件的时间。
1
2
3
4
5
6
7
8# 修改 test.txt 的访问时间为当前时间
touch -a test.txt
# 将 file2.txt 的时间同步为 file1.txt
touch -r file1.txt file2.txt
# 指定文件时间为 2023 年 1 月 1 日
touch -d "2023-01-01" log.txt避免创建新文件:
1
touch -c newfile.txt # 若 newfile.txt 不存在,不创建;若存在,仅更新时间
删除文件:rm 命令
rm(remove)命令用于删除文件或目录,使用时需谨慎,删除后通常无法恢复。
基本用法
1 | rm [选项] 文件/目录 |
常用选项与示例
删除文件:
1
2
3
4
5# 删除单个文件(默认会提示确认)
rm test.txt
# 强制删除(不提示)
rm -f data.txt删除目录:
-r:递归删除目录及其中的所有内容。-rf:强制递归删除(危险操作,谨慎使用)。
1
2
3
4
5# 删除空目录(也可用 rmdir,但 rm -r 更通用)
rm -r empty_dir
# 强制删除非空目录(谨慎!)
rm -rf old_project/删除前提示:
1
rm -i important.txt # 删除前询问确认(y 确认,n 取消)
显示删除过程:
1
rm -v *.log # 显示删除的文件名
查看文件内容
file 命令:判断文件类型
1 | file test.txt # 输出:test.txt: ASCII text |
stat 命令:查看文件详细信息
1 | stat test.txt |
- Access:访问时间(最后一次读取)。
- Modify:修改时间(最后一次修改内容)。
- Change:状态时间(最后一次修改权限 / 属性)。
cat 命令:查看文件内容(适合小文件)
1 | # 查看文件内容 |
more 与 less:分页查看大文件
more:只能向下翻页,适合简单分页。1
2more large_log.txt
# 操作:空格(翻页)、Enter(换行)、b(上翻)、q(退出)less:支持上下滚动、搜索,功能更强大(推荐)。1
2less large_log.txt
# 操作:↑↓(滚动行)、PageUp/PageDown(翻页)、/关键词(搜索)、q(退出)
head 与 tail:查看文件首尾内容
head:默认显示文件前 10 行。1
2head log.txt # 前 10 行
head -n 5 log.txt # 前 5 行tail:默认显示文件后 10 行,支持实时监控。1
2
3tail log.txt # 后 10 行
tail -n 3 log.txt # 后 3 行
tail -f app.log # 实时监控文件新增内容(常用于日志跟踪)组合使用:
1
2# 显示第 1000-1500 行
head -n 1500 large_file.txt | tail -n +1000
链接文件:ln 命令
Linux 支持两种链接:软链接(符号链接)和硬链接。
软链接(类似 Windows 快捷方式)
语法:
ln -s 源文件 链接文件特点:
- 软链接有独立的 inode,存储源文件的路径。
- 源文件删除后,软链接失效(显示 “断链”)。
- 可跨文件系统创建。
1
2
3
4
5# 为 document.txt 创建软链接 doc_link
ln -s document.txt doc_link
# 查看链接(lrwxrwxrwx 表示软链接)
ls -l doc_link # 输出:lrwxrwxrwx 1 user user 12 Oct 1 12:00 doc_link -> document.txt
硬链接
语法:
ln 源文件 链接文件(无-s)特点:
- 与源文件共享同一个 inode,相当于文件的 “别名”。
- 源文件删除后,硬链接仍可用(只要有一个链接存在,文件数据就不丢失)。
- 不可跨文件系统创建,不支持目录。
1
2
3
4
5# 为 data.txt 创建硬链接 data_hlink
ln data.txt data_hlink
# 查看 inode(两者相同)
ls -i data.txt data_hlink # 输出:12345 data.txt 12345 data_hlink
复制文件:cp 命令
cp(copy)命令用于复制文件或目录。
基本用法
1 | cp [选项] 源文件 目标路径 |
常用选项与示例
复制文件到目录:
1
2# 将 file.txt 复制到 /tmp 目录
cp file.txt /tmp/复制文件并重命名:
1
2# 将 file.txt 复制到 /tmp 并命名为 new_file.txt
cp file.txt /tmp/new_file.txt复制目录:
-r:递归复制目录(必须加,否则报错)。-a:保留文件属性(权限、时间等)并递归复制(常用)。
1
2
3
4
5# 复制 docs 目录到 /backup
cp -r docs /backup/
# 保留属性复制(适合备份)
cp -a important_data /backup/强制覆盖与提示:
1
2cp -f file.txt /tmp/ # 强制覆盖已存在文件
cp -i file.txt /tmp/ # 覆盖前询问确认
移动 / 重命名文件:mv 命令
mv(move)命令可移动文件 / 目录,或在同一目录内重命名。
基本用法
1 | mv [选项] 源文件 目标路径 |
常用选项与示例
重命名文件:
1
2# 在当前目录将 old.txt 重命名为 new.txt
mv old.txt new.txt移动文件到目录:
1
2# 将 report.pdf 移动到 /home/user/docs
mv report.pdf /home/user/docs/移动多个文件:
1
2# 将 file1.txt、file2.txt 移动到 /tmp
mv file1.txt file2.txt /tmp/强制移动与提示:
1
2mv -f data.txt /tmp/ # 强制覆盖目标文件
mv -i data.txt /tmp/ # 覆盖前询问显示移动过程:
1
mv -v *.log /var/log/ # 显示移动的文件名
比较文件:diff 命令
diff 命令用于逐行比较两个文件的差异,常用于版本对比。
基本用法
1 | diff [选项] 文件1 文件2 |
常用选项与示例
基本比较:
1
2
3
4
5diff config_old.ini config_new.ini
# 输出示例(< 表示文件1内容,> 表示文件2内容):
# 5c5
# < timeout=30
# > timeout=60忽略空格差异:
1
diff -b file1.txt file2.txt # 忽略行尾空格差异
生成补丁文件(用于后续更新):
1
diff -u old.sh new.sh > update.patch # 生成统一格式的补丁
去重行:uniq 命令
uniq 命令用于删除文件中连续的重复行,常与 sort 结合使用(先排序使重复行相邻)。
基本用法
1 | uniq [选项] 输入文件 [输出文件] |
常用选项与示例
去除连续重复行:
1
2# 假设文件 data.txt 内容:a\na\nb\nb\nb
uniq data.txt # 输出:a\nb统计每行出现次数:
1
2
3
4sort data.txt | uniq -c # 先排序,再统计(-c 显示次数)
# 输出示例:
# 2 a
# 3 b只显示重复行或唯一行:
1
2sort data.txt | uniq -d # 只显示重复行(出现次数 ≥2)
sort data.txt | uniq -u # 只显示唯一行(出现次数 =1)