Skip to content

文件系统管理

本节介绍 Linux 中最常见的文件和目录操作。初学者最容易出错的是路径和删除命令,执行前请先确认当前位置。

路径基础

Linux 的文件系统从根目录 / 开始,所有文件和目录都位于这棵目录树中。

路径类型示例说明
绝对路径/usr/share/doc从根目录 / 开始写出的完整路径
相对路径../man相对于当前目录的路径
家目录路径~当前用户的 home 目录

例如当前目录是 /usr/share/doc,如果要进入 /usr/share/man,可以使用:

bash
cd ../man

这里的 .. 表示上一级目录。

pwd

pwd 用于查看当前所在目录的绝对路径。

bash
pwd

常见用途:

用法说明
pwd显示当前工作目录

示例:

bash
$ pwd
/home/aether/project

cd

cd 用于切换当前工作目录。

切换到指定目录:

bash
cd /home/user

返回上一级目录:

bash
cd ..

回到当前用户家目录:

bash
cd ~

回到上一次所在目录:

bash
cd -

常见用法:

用法说明
cd /path/to/dir切换到指定绝对路径
cd dirname切换到当前目录下的子目录
cd ..返回上一级目录
cd ~回到当前用户家目录
cd -回到上一次所在目录

ls

ls 用于列出目录中的文件和子目录。

查看当前目录:

bash
ls

以长格式显示:

bash
ls -l

显示隐藏文件:

bash
ls -a

查看指定目录:

bash
ls /home/user

常用参数:

参数说明
-l长格式显示权限、用户、大小、时间
-h-l 搭配,大小以易读单位显示
-a显示隐藏文件
-t按修改时间排序
-r反向排序

常用组合:

bash
ls -lh
ls -lah
ls -ltr

tree

tree 用于以树状结构显示目录内容,适合查看项目结构。部分系统默认没有安装。

查看当前目录树:

bash
tree

只显示两层:

bash
tree -L 2

常用参数:

参数说明
-L 数字限制显示目录层级
-a显示隐藏文件
-d只显示目录

touch

touch 用于创建空文件,或更新已有文件的修改时间。

创建一个空文件:

bash
touch notes.txt

一次创建多个文件:

bash
touch a.txt b.txt

常见用法:

用法说明
touch file.txt文件不存在则创建,存在则更新时间
touch a.txt b.txt一次处理多个文件

mkdir

mkdir 用于创建目录。

创建一个目录:

bash
mkdir data

创建多级目录:

bash
mkdir -p project/src/scripts

常用参数:

参数说明
-p自动创建不存在的父目录
-v显示创建过程

cat

cat 用于输出文件内容,适合查看短文件。

查看一个文件:

bash
cat file.txt

连续输出多个文件:

bash
cat a.txt b.txt

常用参数:

参数说明
-n显示行号
-A显示不可见字符,如换行、制表符

less

less 用于分页查看文件,适合查看日志或大文件。

bash
less large.log

常用按键:

按键说明
空格下一页
b上一页
/关键词搜索关键词
n跳到下一个搜索结果
N跳到上一个搜索结果
q退出

head 用于查看文件开头部分。

默认查看前 10 行:

bash
head file.txt

查看前 20 行:

bash
head -n 20 file.txt

常用参数:

参数说明
-n 数字指定显示前多少行

tail

tail 用于查看文件结尾部分,常用于查看日志。

默认查看最后 10 行:

bash
tail file.txt

查看最后 50 行:

bash
tail -n 50 file.txt

持续追踪文件新增内容:

bash
tail -f app.log

常用参数:

参数说明
-n 数字指定显示最后多少行
-f持续追踪文件新增内容

cp

cp 用于复制文件或目录。

复制文件:

bash
cp source.txt target.txt

复制文件到目录:

bash
cp source.txt /tmp/

复制目录:

bash
cp -r dir1 dir2

覆盖前询问:

bash
cp -i source.txt target.txt

常用参数:

参数说明
-r递归复制目录
-i覆盖前询问
-v显示复制过程
-p保留权限、时间等属性

mv

mv 用于移动文件或目录,也可用于重命名。

重命名文件:

bash
mv old.txt new.txt

移动文件到目录:

bash
mv file.txt /tmp/

移动目录:

bash
mv dir1 /data/project/

覆盖前询问:

bash
mv -i a.txt b.txt

常用参数:

参数说明
-i覆盖前询问
-v显示移动过程
-n不覆盖已存在文件

rm

rm 用于删除文件或目录。Linux 默认没有回收站,此命令需要谨慎使用。

删除文件:

bash
rm file.txt

删除前询问:

bash
rm -i file.txt

删除目录:

bash
rm -r old_dir

强制递归删除目录:

bash
rm -rf old_dir

常用参数:

参数说明
-i删除前逐个询问
-r递归删除目录
-f强制删除,不提示
-v显示删除过程

安全建议:

bash
pwd
ls old_dir
rm -ri old_dir

初学者慎用:

bash
rm -rf *
rm -rf /path

执行前务必用 pwdls 确认当前位置和目标。

rmdir

rmdir 用于删除空目录。

bash
rmdir empty_dir

常见用法:

用法说明
rmdir empty_dir删除空目录

如果目录不为空,rmdir 会失败,因此比 rm -r 更安全。

find

find 用于按名称、类型、大小、时间等条件查找文件。

按名称查找:

bash
find . -name "*.txt"

查找普通文件:

bash
find /home/user -type f -name "*.log"

查找目录:

bash
find . -type d -name "results"

查找大文件:

bash
find . -size +1G

常用条件:

条件说明
-name按名称查找
-type f查找普通文件
-type d查找目录
-size +1G查找大于 1GB 的文件
-mtime -7查找 7 天内修改过的文件

locate

locate 用于通过索引快速查找文件,速度比 find 快,但结果可能不是实时的。

查找文件:

bash
locate filename

更新索引:

bash
sudo updatedb

常见用法:

用法说明
locate filename按文件名快速查找
sudo updatedb更新文件索引,通常需要管理员权限

grep

grep 用于在文件中搜索文本。

在文件中搜索关键词:

bash
grep "error" app.log

显示行号:

bash
grep -n "error" app.log

递归搜索目录:

bash
grep -r "main" ./src

忽略大小写:

bash
grep -i "warning" app.log

常用参数:

参数说明
-n显示行号
-r递归搜索目录
-i忽略大小写
-v反向匹配,显示不包含关键词的行

ln

ln 用于创建链接文件。链接分为硬链接和软链接,软链接也叫符号链接,类似快捷方式。

创建硬链接:

bash
ln file.txt hard_link.txt

创建软链接:

bash
ln -s /data/project project_link

常用参数:

参数说明
-s创建软链接
-f强制覆盖已有链接
-n处理符号链接本身,而不是它指向的目录

软链接在 HPC 和服务器上很常用,例如把大型数据目录链接到当前项目目录。

tar

tar 用于打包或解包文件,常见格式有 .tar.tar.gz

打包目录:

bash
tar -cvf archive.tar mydir

解包 .tar 文件:

bash
tar -xvf archive.tar

打包并使用 gzip 压缩:

bash
tar -czvf archive.tar.gz mydir

解压 .tar.gz 文件:

bash
tar -xzvf archive.tar.gz

常用参数:

参数说明
-c创建归档
-x解包
-v显示过程
-f指定文件名
-z使用 gzip 压缩或解压

du

du 用于查看文件或目录占用的磁盘空间。

查看当前目录总大小:

bash
du -sh .

查看当前目录下一层文件和目录大小:

bash
du -h --max-depth=1 .

常用参数:

参数说明
-h以易读单位显示,如 KB、MB、GB
-s只显示总计
--max-depth=1只统计指定层级

sort

sort 用于对文本行排序,经常与管道 | 搭配使用。

按大小排序 du 输出:

bash
du -h --max-depth=1 . | sort -h

倒序排序:

bash
du -h --max-depth=1 . | sort -hr

常用参数:

参数说明
-h按人类可读大小排序,如 1K、20M、3G
-r反向排序
-n按数字排序

常用操作组合

找出当前目录下的大文件:

bash
find . -type f -size +1G

按大小查看当前目录内容:

bash
du -h --max-depth=1 . | sort -h

安全删除目录:

bash
pwd
ls target_dir
rm -ri target_dir