Linux操作大全(二):文件与目录操作详解
本文是Linux操作大全系列的第二篇,详细讲解文件和目录的各种操作,每个命令都会解释”是干什么的”、“怎么用”、“有什么注意事项”。
一、文件操作命令
1.1 创建文件:touch
功能:创建空文件,或者更新文件的修改时间。
基本语法:
touch [选项] 文件名常用示例:
# 创建单个空文件touch file.txt
# 创建多个空文件touch file1.txt file2.txt file3.txt
# 创建带空格的文件名(用引号)touch "my file.txt"
# 更新文件的修改时间(文件已存在时)touch existing_file.txt实际应用场景:
- 快速创建一个空的日志文件
- 批量创建测试文件
- 更新文件时间戳(用于脚本判断文件是否被修改)
1.2 创建目录:mkdir
功能:创建新目录(文件夹)。
基本语法:
mkdir [选项] 目录名常用示例:
# 创建单个目录mkdir mydir
# 创建多级目录(-p参数很重要!)mkdir -p /home/user/projects/2026/code
# 创建多个目录mkdir dir1 dir2 dir3
# 创建目录并设置权限mkdir -m 755 mydir参数说明:
-p:递归创建目录,如果父目录不存在会自动创建-m:设置目录权限-v:显示创建过程
注意:不加 -p 时,如果父目录不存在会报错:
mkdir /home/user/a/b/c# 报错:mkdir: cannot create directory '/home/user/a/b/c': No such file or directory
mkdir -p /home/user/a/b/c# 成功!会自动创建所有缺失的父目录1.3 删除文件:rm
功能:删除文件或目录。
基本语法:
rm [选项] 文件/目录常用示例:
# 删除单个文件rm file.txt
# 删除多个文件rm file1.txt file2.txt file3.txt
# 强制删除(不提示确认)rm -f file.txt
# 删除目录(必须加 -r)rm -r mydir
# 强制删除目录(危险!慎用!)rm -rf mydir
# 删除前提示确认rm -i file.txt参数说明:
-r:递归删除,用于删除目录-f:强制删除,不提示确认-i:删除前提示确认
⚠️ 危险操作警告:
# 这条命令会删除整个系统!!!绝对不要执行!!!rm -rf /
# 这条命令会删除当前目录下所有文件!!!rm -rf *安全建议:
- 删除前先用
ls确认要删除的内容 - 重要文件先备份再删除
- 使用
-i参数,让系统在删除前提示你确认 - 不要在根目录
/下执行rm -rf
1.4 复制文件:cp
功能:复制文件或目录。
基本语法:
cp [选项] 源文件 目标位置常用示例:
# 复制文件cp file.txt file_backup.txt
# 复制到另一个目录cp file.txt /home/user/Documents/
# 复制并重命名cp file.txt /home/user/Documents/new_name.txt
# 复制目录(必须加 -r)cp -r mydir mydir_backup
# 保留文件属性(权限、时间等)cp -p file.txt file_backup.txt
# 覆盖前提示确认cp -i file.txt /existing/file.txt
# 显示复制过程cp -v file.txt file_backup.txt参数说明:
-r:递归复制,用于复制目录-p:保留文件属性-i:覆盖前提示确认-v:显示复制过程-a:归档复制,等同于-dpR,保留所有属性
1.5 移动/重命名:mv
功能:移动文件/目录,或者重命名。
基本语法:
mv [选项] 源文件 目标位置常用示例:
# 重命名文件mv old_name.txt new_name.txt
# 移动文件到另一个目录mv file.txt /home/user/Documents/
# 移动并重命名mv file.txt /home/user/Documents/new_name.txt
# 移动目录mv mydir /home/user/Documents/
# 覆盖前提示确认mv -i file.txt /existing/file.txt
# 不覆盖已存在的文件mv -n file.txt /existing/file.txt参数说明:
-i:覆盖前提示确认-n:不覆盖已存在的文件-v:显示移动过程
1.6 查看文件内容:cat、less、more、head、tail
cat命令
功能:一次性显示整个文件内容。
cat file.txt
# 显示行号cat -n file.txt
# 合并多个文件cat file1.txt file2.txt > combined.txt适用场景:查看小文件(几十行以内)。
less命令
功能:分页查看文件内容,适合查看大文件。
less large_file.log操作方式:
空格:下一页b:上一页↑/↓:上下滚动一行/关键词:搜索关键词n:下一个搜索结果N:上一个搜索结果q:退出
more命令
功能:类似less,但功能较少。
more file.txt操作方式:
空格:下一页Enter:下一行q:退出
head命令
功能:查看文件的前几行。
# 默认显示前10行head file.txt
# 显示前20行head -n 20 file.txt
# 显示前5行head -5 file.txt适用场景:快速查看文件开头,比如查看日志的前几条记录。
tail命令
功能:查看文件的最后几行,或者实时监控文件变化。
# 默认显示最后10行tail file.txt
# 显示最后20行tail -n 20 file.txt
# 实时监控文件变化(非常有用!)tail -f /var/log/syslog
# 实时监控并显示行号tail -fn 100 /var/log/syslog适用场景:
- 查看日志文件的最新内容
- 实时监控日志输出(
tail -f是运维最常用的命令之一)
1.7 查找文件:find
功能:在目录树中查找文件。
基本语法:
find [搜索路径] [条件] [动作]常用示例:
# 按名字查找find /home -name "*.txt"
# 忽略大小写find /home -iname "*.TXT"
# 按类型查找(f=文件,d=目录)find /home -type f -name "*.log"find /home -type d -name "logs"
# 按大小查找find /home -size +100M # 大于100MBfind /home -size -10M # 小于10MBfind /home -size 0 # 空文件
# 按时间查找find /home -mtime -7 # 7天内修改过的文件find /home -mtime +30 # 30天前修改过的文件find /home -mmin -60 # 60分钟内修改过的文件
# 按权限查找find /home -perm 777 # 权限为777的文件
# 找到后执行动作find /home -name "*.tmp" -exec rm {} \; # 找到后删除find /home -name "*.log" -exec ls -l {} \; # 找到后列出详情find /home -name "*.txt" -exec cp {} /backup/ \; # 找到后备份1.8 搜索文件内容:grep
功能:在文件中搜索指定的文本。
基本语法:
grep [选项] 搜索内容 文件常用示例:
# 基本搜索grep "error" logfile.txt
# 忽略大小写grep -i "error" logfile.txt
# 显示行号grep -n "error" logfile.txt
# 递归搜索目录下所有文件grep -r "error" /var/log/
# 显示匹配行的前后几行grep -B 3 -A 3 "error" logfile.txt # 前3行+后3行grep -C 5 "error" logfile.txt # 前后各5行
# 反向匹配(显示不包含搜索内容的行)grep -v "debug" logfile.txt
# 统计匹配行数grep -c "error" logfile.txt
# 使用正则表达式grep -E "error|warning" logfile.txtgrep -E "^[0-9]" file.txt # 以数字开头的行参数说明:
-i:忽略大小写-n:显示行号-r:递归搜索-v:反向匹配-c:统计行数-E:使用扩展正则表达式-l:只显示包含匹配内容的文件名
二、目录操作命令
2.1 切换目录:cd
功能:Change Directory,切换当前工作目录。
常用示例:
# 切换到指定目录cd /home/user/Documents
# 切换到家目录cd ~cd
# 切换到上一级目录cd ..
# 切换到上上一级目录cd ../..
# 切换到上一次所在的目录(很实用!)cd -
# 使用绝对路径cd /var/log
# 使用相对路径cd Documentscd ./subdir2.2 显示当前目录:pwd
功能:Print Working Directory,显示当前工作目录的完整路径。
pwd输出示例:
/home/ubuntu/Documents2.3 列出目录内容:ls
功能:list,列出目录中的文件和子目录。
常用示例:
# 基本列表ls
# 显示详细信息ls -l
# 显示隐藏文件(以.开头的文件)ls -a
# 显示详细信息+隐藏文件ls -la
# 显示文件大小(人类可读格式)ls -lh
# 按时间排序(最新的在前)ls -lt
# 按大小排序(最大的在前)ls -lS
# 递归显示子目录ls -R
# 只显示目录ls -d */
# 显示文件的inode号ls -ils -l 输出详解:
-rw-r--r-- 1 ubuntu ubuntu 4096 May 25 10:30 file.txt各列含义:
-rw-r--r--:文件权限(后面会详细讲)1:硬链接数ubuntu:所有者ubuntu:所属组4096:文件大小(字节)May 25 10:30:最后修改时间file.txt:文件名
2.4 树状显示目录:tree
功能:以树状图显示目录结构。
# 安装tree命令(如果没有)sudo apt install tree
# 显示目录树tree
# 只显示2层tree -L 2
# 显示隐藏文件tree -a
# 只显示目录tree -d输出示例:
.├── Documents│ ├── file1.txt│ └── file2.txt├── Downloads│ └── image.jpg└── Pictures └── photo.png三、文件权限详解
3.1 权限的基本概念
Linux中的每个文件都有三组权限:
- 所有者(Owner):文件的拥有者
- 所属组(Group):文件所属的用户组
- 其他人(Others):除了所有者和组成员以外的人
每组权限包含三种:
- 读(r):Read,值为4
- 写(w):Write,值为2
- 执行(x):eXecute,值为1
3.2 权限表示方法
字符表示法
-rwxr-xr--- 第1位:文件类型(
-普通文件,d目录,l链接) - 第2-4位:所有者权限(rwx = 可读可写可执行)
- 第5-7位:所属组权限(r-x = 可读可执行,不可写)
- 第8-10位:其他人权限(r— = 只读)
数字表示法
rwxr-xr-- = 754计算方法:
- r = 4
- w = 2
- x = 1
- rwx = 4+2+1 = 7
- r-x = 4+0+1 = 5
- r— = 4+0+0 = 4
常见权限组合:
| 数字 | 字符 | 含义 |
|---|---|---|
| 777 | rwxrwxrwx | 所有人可读可写可执行(不安全!) |
| 755 | rwxr-xr-x | 所有者可读写执行,其他人可读执行 |
| 644 | rw-r—r— | 所有者可读写,其他人只读 |
| 700 | rwx------ | 只有所有者可读写执行 |
| 600 | rw------- | 只有所有者可读写 |
3.3 修改权限:chmod
功能:Change Mode,修改文件权限。
常用示例:
# 数字方式设置权限chmod 755 file.sh # rwxr-xr-xchmod 644 file.txt # rw-r--r--chmod 700 private_dir # rwx------
# 符号方式设置权限chmod u+x file.sh # 给所有者添加执行权限chmod g+w file.txt # 给所属组添加写权限chmod o-r file.txt # 去掉其他人的读权限chmod a+r file.txt # 给所有人添加读权限
# 递归修改目录权限chmod -R 755 /home/user/public
# 参考其他文件的权限chmod --reference=file1.txt file2.txt符号说明:
u:所有者(user)g:所属组(group)o:其他人(others)a:所有人(all)+:添加权限-:去掉权限=:设置权限
3.4 修改所有者:chown
功能:Change Owner,修改文件的所有者和所属组。
常用示例:
# 修改所有者chown user1 file.txt
# 修改所有者和所属组chown user1:group1 file.txt
# 只修改所属组chown :group1 file.txt
# 递归修改目录chown -R user1:group1 /home/user13.5 修改所属组:chgrp
功能:Change Group,修改文件的所属组。
# 修改所属组chgrp group1 file.txt
# 递归修改chgrp -R group1 /home/group1_files四、文件压缩与解压
4.1 tar命令
功能:打包和解包文件(tar本身不压缩,只打包)。
常用示例:
# 打包目录tar -cvf archive.tar /home/user/Documents
# 打包并gzip压缩tar -czvf archive.tar.gz /home/user/Documents
# 打包并bzip2压缩tar -cjvf archive.tar.bz2 /home/user/Documents
# 解包tar -xvf archive.tar
# 解压tar.gztar -xzvf archive.tar.gz
# 解压tar.bz2tar -xjvf archive.tar.bz2
# 解压到指定目录tar -xzvf archive.tar.gz -C /home/user/backup/
# 查看压缩包内容(不解压)tar -tzvf archive.tar.gz参数说明:
-c:创建(create)-x:解压(extract)-v:显示过程(verbose)-f:指定文件名(file)-z:使用gzip压缩-j:使用bzip2压缩-C:指定解压目录
记忆口诀:
- 压缩:
tar -czvf(c=create创建,z=zip压缩,v=verbose显示,f=file文件) - 解压:
tar -xzvf(x=extract解压)
4.2 gzip / gunzip
功能:压缩/解压单个文件。
# 压缩文件(会删除原文件)gzip file.txt
# 解压文件gunzip file.txt.gz
# 保留原文件压缩gzip -k file.txt
# 查看压缩信息gzip -l file.txt.gz4.3 zip / unzip
功能:创建和解压ZIP格式的压缩包(兼容Windows)。
# 压缩文件zip archive.zip file1.txt file2.txt
# 压缩目录(-r递归)zip -r archive.zip /home/user/Documents
# 解压unzip archive.zip
# 解压到指定目录unzip archive.zip -d /home/user/extract/
# 查看压缩包内容unzip -l archive.zip4.4 bzip2 / bunzip2
功能:比gzip压缩率更高,但速度更慢。
# 压缩bzip2 file.txt
# 解压bunzip2 file.txt.bz24.5 xz / unxz
功能:压缩率最高,但速度最慢。
# 压缩xz file.txt
# 解压unxz file.txt.xz五、链接文件
5.1 什么是链接?
链接类似于Windows的”快捷方式”,但功能更强大。
Linux有两种链接:
- 硬链接(Hard Link):直接指向文件数据
- 软链接(Symbolic Link):指向文件的路径
5.2 创建软链接:ln -s
# 创建软链接ln -s /home/user/file.txt /home/user/Desktop/file_link.txt
# 创建目录的软链接ln -s /var/www/html /home/user/website软链接特点:
- 删除原文件后,软链接失效
- 可以链接目录
- 可以跨文件系统
5.3 创建硬链接:ln
# 创建硬链接ln /home/user/file.txt /home/user/file_hardlink.txt硬链接特点:
- 删除原文件后,硬链接仍然有效
- 不能链接目录
- 不能跨文件系统
- 硬链接和原文件共享同一个inode
六、文件搜索高级技巧
6.1 locate命令
功能:基于数据库的快速文件搜索。
# 安装mlocatesudo apt install mlocate
# 更新数据库sudo updatedb
# 搜索文件locate file.txt
# 忽略大小写locate -i FILE.TXT
# 限制结果数量locate -n 10 "*.log"注意:locate基于数据库搜索,新建的文件可能搜不到,需要先运行 sudo updatedb 更新数据库。
6.2 which命令
功能:查找命令的完整路径。
which lswhich python3# 输出:/usr/bin/python36.3 whereis命令
功能:查找命令的二进制文件、源代码和帮助文档。
whereis ls# 输出:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz七、文件比较
7.1 diff命令
功能:比较两个文件的差异。
# 比较两个文件diff file1.txt file2.txt
# 并排显示差异diff -y file1.txt file2.txt
# 显示上下文格式diff -u file1.txt file2.txt7.2 comm命令
功能:比较两个已排序文件的相同和不同行。
# 比较两个已排序的文件comm sorted1.txt sorted2.txt
# 只显示相同行comm -12 sorted1.txt sorted2.txt八、其他常用命令
8.1 识别文件类型:file
功能:检测文件的类型(文本、图片、可执行文件等)。
# 查看文件类型file image.jpg# 输出:image.jpg: JPEG image data, JFIF standard 1.01
file document.pdf# 输出:document.pdf: PDF document, version 1.7
file script.sh# 输出:script.sh: Bourne-Again shell script, ASCII text executable
# 查看多个文件file *实用场景:下载的文件没有扩展名时,用 file 命令识别真实类型。
8.2 流编辑器:sed
功能:对文本进行替换、删除、插入等操作,常用于批量处理。
# 替换文件中的字符串(显示到屏幕,不修改原文件)sed 's/old/new/' file.txt
# 全局替换(每行所有匹配)sed 's/old/new/g' file.txt
# 直接修改原文件(加 -i 参数)sed -i 's/old/new/g' file.txt
# 删除包含特定字符串的行sed '/keyword/d' file.txt
# 删除空行sed '/^$/d' file.txt
# 在第3行前插入新内容sed '3i\新插入的内容' file.txt
# 打印第2-4行sed -n '2,4p' file.txt实用场景:
- 批量修改配置文件
- 日志文件处理
- 文本格式转换
8.3 文本处理:awk
功能:强大的文本分析工具,按列处理数据。
# 打印第一列和第三列awk '{print $1, $3}' file.txt
# 指定分隔符(默认是空格)awk -F: '{print $1, $3}' /etc/passwd
# 条件筛选(第三列大于100的行)awk '$3 > 100' file.txt
# 计算总和awk '{sum += $1} END {print sum}' numbers.txt
# 打印行号和内容awk '{print NR, $0}' file.txt
# 格式化输出awk '{printf "%-20s %10s", $1, $2}' file.txt实用场景:
- 处理CSV/日志文件
- 系统信息提取
- 数据统计分析
8.4 排序:sort
功能:对文本文件的行进行排序。
# 基本排序(字典序)sort file.txt
# 数值排序sort -n numbers.txt
# 逆序排序sort -r file.txt
# 去重排序sort -u file.txt
# 按第二列排序sort -k2 file.txt
# 按第二列数值排序sort -k2 -n file.txt
# 检查文件是否已排序sort -c file.txt实用场景:
- 整理列表数据
- 配合
uniq命令去重 - 日志按时间排序
8.5 去重:uniq
功能:去除相邻的重复行(通常配合sort使用)。
# 去除相邻重复行uniq file.txt
# 统计每行出现次数uniq -c file.txt
# 只显示重复的行uniq -d file.txt
# 只显示不重复的行uniq -u file.txt
# 忽略大小写uniq -i file.txt典型用法(先排序再去重):
sort file.txt | uniq # 去重sort file.txt | uniq -c # 去重并计数sort file.txt | uniq -c | sort -rn # 按频率排序8.6 统计:wc
功能:统计文件的行数、单词数、字节数。
wc file.txt # 显示行数、单词数、字节数wc -l file.txt # 只显示行数wc -w file.txt # 只显示单词数wc -c file.txt # 只显示字节数wc -m file.txt # 只显示字符数实用场景:
# 统计代码行数find . -name "*.py" | xargs wc -l
# 统计目录下文件数量ls | wc -l
# 统计日志错误次数grep -c "ERROR" app.log九、总结
本章详细讲解了Linux文件和目录的各种操作:
- 创建:touch(文件)、mkdir(目录)
- 删除:rm(危险操作,谨慎使用!)
- 复制:cp
- 移动/重命名:mv
- 查看内容:cat、less、more、head、tail
- 查找文件:find、locate、which、whereis
- 搜索内容:grep
- 权限管理:chmod、chown、chgrp
- 压缩解压:tar、gzip、zip、bzip2、xz
- 链接:ln(硬链接)、ln -s(软链接)
下一章预告:《Linux操作大全(三):用户与权限管理详解》
如有疑问或发现错误,欢迎在评论区指出!
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时








