Linux系统中的文件和目录管理是日常运维和开发的核心操作,其中增删改查(CRUD)命令是基础中的基础,这些命令通过简洁的语法实现了对文件系统的高效操作,下面将详细介绍常用的增删改查命令及其使用场景。

查询(Read)命令:查看文件与目录信息
查询操作是Linux中最频繁的操作之一,主要用于获取文件、目录的属性及内容。
-
ls命令:列出目录内容
ls
:列出当前目录的文件和目录名,默认不显示隐藏文件(以开头)。ls -l
:以长格式显示,包含权限、所有者、大小、修改时间等详细信息。ls -a
:显示所有文件,包括隐藏文件。ls -h
:以人类可读格式显示文件大小(如K、M、G)。ls -R
:递归列出子目录内容。
-
cat命令:查看文件内容
cat filename
:直接显示整个文件内容,适合小文件。cat -n filename
:显示行号。cat file1 file2 > file3
:合并多个文件到新文件。
-
less/more命令:分页查看文件内容
(图片来源网络,侵删)less filename
:支持上下翻页、搜索()、退出(q
),适合大文件。more filename
:基本分页功能,按空格键翻页,按q
退出。
-
head/tail命令:查看文件开头或结尾部分
head -n 5 filename
:显示文件前5行。tail -n 5 filename
:显示文件后5行。tail -f filename
:实时跟踪文件内容变化(如日志文件)。
-
wc命令:统计文件信息
wc filename
:显示文件的行数、单词数、字节数。wc -l filename
:仅统计行数。
-
find命令:按条件查找文件
find /path -name "*.txt"
:在指定路径下查找扩展名为.txt的文件。find /path -type f -size +10M
:查找大于10MB的普通文件。find /path -mtime -7
:查找7天内修改过的文件。
增加(Create)命令:创建文件与目录
增加操作主要用于创建新文件或目录,或向文件中添加内容。

-
mkdir命令:创建目录
mkdir newdir
:创建单个目录。mkdir -p parentdir/newdir
:递归创建多级目录(包括父目录)。mkdir -m 755 newdir
:创建目录并设置权限(rwxr-xr-x)。
-
touch命令:创建空文件或更新文件时间
touch newfile.txt
:创建空文件。touch -a file.txt
:仅更新文件的访问时间。touch -m file.txt
:仅更新文件的修改时间。
-
echo命令:向文件中添加内容
echo "Hello World" > file.txt
覆盖写入文件(若文件不存在则创建)。echo "Hello World" >> file.txt
追加到文件末尾。echo -e "Line1\nLine2" > file.txt
:写入多行内容(-e
支持转义字符)。
-
tee命令:同时输出到文件和终端
echo "test" | tee file.txt
写入文件并在终端显示。echo "append" | tee -a file.txt
并显示。
修改(Update)命令:编辑文件与属性
修改操作包括更新文件内容、更改权限、所有者或移动文件位置。
-
文本编辑器:直接修改文件内容
nano filename
:简单易用的命令行编辑器。vim filename
:功能强大的编辑器,需学习基本命令(如i
进入编辑模式,wq
保存退出)。
-
chmod命令:修改文件权限
chmod 755 filename
:设置权限为所有者可读写执行,其他用户可读执行。chmod u+x filename
:为所有者添加执行权限。chmod go-w filename
:移除组用户和其他用户的写权限。
-
chown命令:修改文件所有者
chown user:group filename
:同时修改所有者和所属组。chown -R user /path
:递归修改目录及其内容的所有者。
-
mv命令:移动或重命名文件/目录
mv oldname newname
:重命名文件或目录。mv /path/to/file /new/location/
:移动文件到新位置。mv -i filename.txt ../
:移动前提示确认(覆盖已存在文件)。
-
cp命令:复制文件或目录
cp source.txt dest.txt
:复制文件。cp -r /source/dir /dest/dir
:递归复制目录(需加-r
)。cp -p source.txt dest.txt
:保留文件权限、时间戳等属性。
删除(Delete)命令:移除文件与目录
删除操作需谨慎,尤其是使用rm -rf
时,数据通常无法恢复。
-
rm命令:删除文件或目录
rm filename.txt
:删除文件(需确认)。rm -f filename.txt
:强制删除,不提示确认。rm -r directory/
:递归删除目录及其内容(需逐个确认)。rm -rf directory/
:强制递归删除(危险操作,慎用)。
-
rmdir命令:删除空目录
rmdir emptydir
:仅能删除空目录,非空目录需用rm -r
。
常用命令对比表格
操作类型 | 命令 | 常用选项 | 功能说明 |
---|---|---|---|
查询 | ls | -l , -a , -h , -R |
列出目录内容,显示详细信息 |
cat | -n |
查看文件内容 | |
find | -name , -type , -size |
按条件查找文件 | |
增加 | mkdir | -p , -m |
创建目录(含多级和权限设置) |
touch | -a , -m |
创建空文件或更新时间 | |
echo | > , >> |
写入或追加内容到文件 | |
修改 | vim/nano | 编辑文件内容 | |
chmod | 755 , u+x , go-w |
修改文件权限 | |
mv | -i |
移动或重命名文件/目录 | |
删除 | rm | -f , -r , -rf |
删除文件或目录(强制/递归) |
rmdir | 删除空目录 |
相关问答FAQs
Q1: 如何批量重命名文件?
A1: 可以结合mv
和循环命令实现,例如使用for
循环将当前目录下所有.txt
文件扩展名改为.bak
:
for file in *.txt; do mv "$file" "${file%.txt}.bak"; done
或使用rename
命令(需安装):
rename 's/\.txt$/\.bak/' *.txt
Q2: 如何查看文件中的特定行(如第10-20行)?
A2: 可以组合使用sed
或awk
命令,
sed -n '10,20p' filename
:显示文件第10到20行。awk 'NR>=10 && NR<=20' filename
:通过行号(NR)筛选指定行。
或使用head
和tail
组合:head -n 20 filename | tail -n +11