Linux教程(一)文件相关命令

308 阅读8分钟

在 Linux 中有很多命令,这篇文章将介绍 Linux 文件相关的命令,如下图所示。

image.png

文件创建命令

touch

touch 命令用于创建新的文件,示例如下所示:

touch filename.txt  # 创建空文件
touch file1 file2 file3  # 批量创建文件
touch "file with spaces.txt"  # 创建包含空格的文件

效果如下图所示:

Ubuntu 64_li-2025-06-25-15-24-15.png

mkdir

mkdir 命令用于创建目录,示例如下所示:

mkdir dir1  # 创建单个目录
mkdir dir2 dir3  # 同时创建多个目录
mkdir -p nested/dir/structure  # 递归创建多级目录

cp

cp 命令用于复制文件或目录。示例如下所示:

cp source.txt destination/  # 复制文件到目录
cp file.txt new_name.txt  # 复制并重命名文件
cp -r src/ dest/  # 递归复制目录
cp -v source.txt destination/ # 显示复制过程,输出每个被复制文件的名称
cp -p important.conf /etc/backup/
# 目标文件将保持原文件的权限和修改时间
cp -a /var/log/ /backup/log_archive/ # 完整保留日志目录的结构和所有文件属性

文件删除命令

rmdir

rmdir 命令用于删除空目录(只能删除不含任何文件或子目录的目录)示例如下所示:

mkdir empty_dir
rmdir empty_dir  # 删除空目录

mkdir -p a/b/c
rmdir -p a/b/c  # 递归删除,最终a目录也被删除

rm

rm 作用是删除文件或目录(它的功能更强大,可删除非空目录)。rm 删除支持多个选项,常用选项有:

  • -r 或 -R:递归删除目录及其所有内容(危险!)
  • -f:强制删除,不提示确认(结合-r可彻底删除目录树)
  • -i:交互式删除,删除前询问确认

除此之外,rm 还支持删除的文件带上通配符。linux 支持的通配符如下所示:

  • * 匹配任何字符串
  • 匹配一个字符串
  • [xyz] 匹配xyz任意一个字符串
  • [a-z] 匹配一个范围
  • [!xyz][^xyz] 不匹配

示例如下所示:

rm file.txt         # 删除单个文件
rm *.log            # 删除所有.log文件
rm -r my_project/   # 递归删除项目目录
rm -rf temp/        # 强制递归删除(谨慎使用!)

使用 rm -i file* 删除之前touch创建的文件示例如下图所示:

Ubuntu 64_li-2025-06-25-15-40-56.png

文件修改命令

mv

mv 命令用于移动文件或目录,也可用于重命名操作。mv 支持多个选项,常见选项有:

  • -i 交互式模式,覆盖已有文件前提示确认
  • -f 强制覆盖,不提示警告(谨慎使用)
  • -v 显示详细操作过程
  • -n 不覆盖已存在的文件

示例如下所示:

# 重命名文件
mv old_name.txt new_name.txt 
# 重命名目录
mv mv_demo/dest mv_demo/new_dest
# 文件/目录移动
mv document.pdf /home/user/Documents/
# 批量移动
mv *.jpg images/
mv file1 file2 dir/

文件搜索命令

pwd 和 cd

pdw 命令的作用是显示当前工作目录的绝对路径;而 cd 命令的作用是切换当前工作目录。示例如下所示:

cd /usr/local/bin
pwd  # 输出:/usr/local/bin
cd /path/to/directory  # 绝对路径切换
cd ../                # 返回上级目录
cd ~                  # 回到用户主目录
cd -                  # 返回上一个目录

ls

ls 会列出目录内容。ls 命令有很多选项,常见的选项有:

  • -a 显示所有文件(包括隐藏文件)
  • -l 长格式显示(权限、所有者、大小等)文件的详细信息
  • -lh 长格式显示文件的详细信息,其中文件大小以k、M 等更容易理解的形式显示
  • -t 按修改时间排序
  • -S 根据文件大小排序

更多关于 ls 命令的可以看 Linux—目录文件属性和权限管理详解Linux命令 ls - 显示目录内容列表

find

find 基于条件搜索文件或目录。find 支持多个选项,常用选项如下:

find /path -name "filename"  # 按文件名查找
find . -type d               # 查找目录
find . -type f -size +10M    # 查找大于10MB的文件
find . -mtime -7             # 查找7天内修改的文件
find . -user username        # 查找特定用户的文件

示例如下所示:

find . -name "*.txt"  # 查找所有txt文件
find . -type d  # 查找所有目录
find . -size +1k  # 查找大于1KB的文件
find . -mtime -1  # 查找24小时内修改的文件

grep

grep 用于在文件中搜索匹配的文本。grep 支持多个选项,常用选项如下:

grep "pattern" file.txt         # 基本搜索
grep -r "pattern" /path/        # 递归搜索目录
grep -i "pattern" file.txt      # 忽略大小写
grep -n "pattern" file.txt      # 显示行号
grep -v "pattern" file.txt      # 反向匹配(不包含模式的行)

示例如下所示:

grep "error" logs/error.log  # 在文件中搜索字符串
grep -r "system" .  # 递归搜索当前目录
grep -i "failed" logs/*  # 忽略大小写搜索
grep -n "running" logs/info.log  # 显示行号

locate

locate 命令基于数据库快速查找文件。注意:locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找

locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工调用 updatedb 命令升级数据库。默认情况下 updatedb 每天执行一次。示例如下所示:

updatedb          # 更新数据库(需root权限)
locate filename   # 查找文件
locate -i *.jpg   # 忽略大小写查找jpg文件

文件压缩命令

tar

tar 命令作用是创建或提取归档文件,常与压缩工具结合使用。示例如下所示:

tar -cvf archive.tar file*.txt  # 创建tar包
tar -cvzf archive.tar.gz *.txt  # 创建gzip压缩的tar包
tar -cvjf archive.tar.bz2 *.txt # 创建bzip2压缩的tar包
tar -tvf archive.tar            # 查看tar包内容
tar -xvf archive.tar -C subdir/ # 解压到指定目录

zip 和 unzip

zip 命令作用是创建 ZIP 格式压缩包;而 unzip 命令的作用是解压 ZIP 文件。示例如下所示:

zip -r project.zip src/ docs/  # 压缩多个目录
zip -d project.zip "src/*.log"  # 删除压缩包中的日志文件

unzip archive.zip  # 解压到当前目录
unzip -d extracted/ archive.zip  # 解压到extracted目录

文件权限命令

chmod

chmod (change mode) 是 Linux 系统中用于更改文件或目录权限的命令,它控制着文件所有者、所属组和其他用户对文件的访问权限。注意:只有文件所有者和超级用户可以修改文件或目录的权限

image.png

比如,如果我们想要给文件添加执行权限,可以使用如下命令:

chmod u+x script.sh       # 给所有者添加执行权限

其中 u 是用户类型,表示文件所有者;+ 表示添加权限,还有 - 表示减少权限,= 表示设置权限;x 是权限位符号,表示执行权限。

所有的用户类型有:

  • u:文件所有者(user)
  • g:所属组(group)
  • o:其他用户(others)
  • a:所有用户(all)

所有的权限位有,这里也可以使用数字来表示,比如 7 表示 rwx,5表示-xr。

  • r:读权限(4)
  • w:写权限(2)
  • x:执行权限(1)

示例如下所示:

chmod o-r test_file.txt  # 移除其他用户的读权限
chmod g-w,o-rwx file.txt  # 移除组的写权限和其他用户的所有权限
chmod 644 config.ini      # 设置为rw-r--r--(常用文件权限)
chmod 755 directory/      # 设置为rwxr-xr-x(常用目录权限)

chown

chown 命令作用是修改文件或目录的所有者和所属组。示例如下所示:

chown root:admin config.conf    # 将文件所有者设为root,组设为admin
chown -R runoob:runoobgroup *  # 将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup
chown user: file.txt            # 仅变更所有者,保留原组
chown :group directory/         # 仅变更所属组

chgrp

chgrp 命令仅修改文件或目录的所属组。示例如下所示:

chgrp developers project/       # 将目录所属组设为developers
chgrp -R staff documents/       # 递归变更目录及所有文件的所属组

文件内容命令

stat

stat 命令作用是显示文件的详细属性。效果如下图所示:

Ubuntu 64_li-2025-06-25-20-24-22.png

cat

cat 命令用于显示文件内容,也可以用来合并文件。示例如下所示:

cat -n large_file.txt  # 带行号显示大文件
cat file1.txt file2.txt > combined.txt  # 合并多个文件

head/tail

head 命令用来显示文件的前N行(默认10行);tail 用于显示文件的后 N 行(默认10行)。示例如下所示:

head -n 5 /var/log/syslog  # 查看系统日志前5行
head -c 100 data.csv  # 显示CSV文件前100字节
tail -n 20 access.log  # 查看访问日志最后20行
tail -f /var/log/messages  # 实时监控系统消息

其他

which

which 命令用于查找并显示命令的可执行文件路径。示例如下所示:

which git         # 输出:/usr/bin/git
which python      # 输出:/usr/bin/python

df

df 命令显示文件系统的磁盘使用情况。示例如下所示:

df -h             # 查看所有分区使用情况
df -h /dev/sda1   # 查看特定分区使用情况

du

du 命令用于统计文件或者目录的磁盘使用情况。示例如下所示:

du -sh ~/Documents  # 显示Documents目录总大小
du -h --max-depth=1 /var  # 显示/var下一级目录大小

wc

wc 命令用于统计文件中的行数、单词数和字节数。wc 有多个选项,常见的选项有:

  • -l:只统计行数
  • -w:只统计单词数
  • -c:只统计字节数

示例如下所示:

wc README.md # 输出:行数 单词数 字节数 README.md 
wc subdir/file1.txt  # 显示行数、单词数、字节数
wc -l subdir/*.txt   # 只统计行数