文件与目录操作
一、查看目录内容
常用命令:ls、tree
1、ls
(1)、命令简介
ls(List Directory Contents)是 Linux/Unix 中最基础且最常用的命令之一,用于列出目录内容,包括文件、子目录及其属性信息。以下是 ls 命令的完整指南:
(2)、命令选项清单
#命令语法:ls [选项] [目录/文件]
#选项 说明
#显示控制类
-a, --all 显示所有文件(包括以 . 开头的隐藏文件)
-A, --almost-all 显示除 . 和 .. 外的所有文件
-d, --directory 仅显示目录本身,不显示其内容
-H 跟踪命令行中指定的符号链接
-L, --dereference 显示符号链接指向的文件信息(而非链接本身)
--hide=PATTERN 隐藏符合 shell 模式的文件(被 -a 覆盖)
-I, --ignore=PATTERN 忽略符合模式的文件
#格式与样式
-l 长格式显示(权限、所有者、大小等)
-1 每行显示一个文件
-m 用逗号分隔文件,填满行宽
-x 按行排列文件(默认按列)
-C 按列排列文件
--color[=WHEN] 彩色输出(always/never/auto)
-F, --classify 在文件名后附加标识符(*/=>@|)
--file-type 类似 -F,但不标记可执行文件(*)
-p, --indicator-style=slash 仅对目录加 / 标识
--format=WORD 指定输出格式(verbose、commas 等)
#排序
-t 按修改时间排序(最新在前)
-r, --reverse 反向排序
-S 按文件大小降序
-X 按扩展名排序
-v 按版本号自然排序
-U 不排序,按目录原始顺序显示
--sort=WORD 指定排序字段(size、time、extension 等)
#时间显示
--time=WORD 显示指定时间类型(atime、ctime)
--time-style=STYLE 时间格式(full-iso、long-iso 等)
-c 配合 -lt 按 ctime 排序,或配合 -l 显示 ctime
-u 配合 -lt 按访问时间排序,或配合 -l 显示 atime
#文件大小与单位
-h, --human-readable 以易读格式显示大小(如 1K、2M)
--si 类似 -h,但以 1000 为基数(非 1024)
-k, --kibibytes 默认以 1024 字节为块单位
--block-size=SIZE 指定块大小单位(如 M 表示 MB)
-s, --size 显示文件占用的块数
#特殊显示
-i, --inode 显示文件的 inode 编号
-n, --numeric-uid-gid 显示数字 UID/GID(非名称)
-o 类似 -l,但不显示组信息
-g 类似 -l,但不显示所有者
-G, --no-group 长格式下不显示组名
--author 显示文件作者(需配合 -l)
-Z, --context 显示 SELinux 安全上下文
#注:命令后-a、-l等选项可以同时使用,使用方式:-al或-a -l
(3)、常用命令示例
root@master:~# ls ~ #查看家目录下文件
snap
root@master:~# ls -a ~ #查看家目录下文件,包含隐藏文件
. .. .bash_history .bashrc .profile snap .ssh .sudo_as_admin_successful .viminfo
root@master:~# ls -al ~ #查看家目录下文件,包含隐藏文件,并输出文件详细信息
total 32
drwx------ 4 root root 4096 Jul 8 15:31 .
drwxr-xr-x 20 root root 4096 Jul 8 15:00 ..
-rw------- 1 root root 1183 Jul 18 14:50 .bash_history
-rw-r--r-- 1 root root 3106 Oct 15 2021 .bashrc
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
drwx------ 3 root root 4096 Jul 8 15:02 snap
drwx------ 2 root root 4096 Jul 8 15:02 .ssh
-rw-r--r-- 1 root root 0 Jul 8 15:06 .sudo_as_admin_successful
-rw------- 1 root root 3342 Jul 8 15:10 .viminfo
root@master:~# ls -d ~ #仅显示家目录下的目录名
/root
root@master:~# ls -ld ~ #仅显示家目录下的目录名,并显示详细信息
drwx------ 4 root root 4096 Jul 8 15:31 /root
root@master:~# ls -R ~ #递归显示子目录内容
.:
snap
./snap:
lxd
./snap/lxd:
29351 31333 common current
./snap/lxd/29351:
./snap/lxd/31333:
./snap/lxd/common:
root@master:~/snap/lxd# ls -lt /root/snap/lxd # 按时间排序(最新修改在前)
total 12
lrwxrwxrwx 1 root root 5 Jul 8 18:58 current -> 31333
drwxr-xr-x 2 root root 4096 Jul 8 15:02 29351
drwxr-xr-x 2 root root 4096 Jul 8 15:02 31333
drwxr-xr-x 2 root root 4096 Jul 8 15:02 common
root@master:~/snap/lxd# ls -lS /root/snap/lxd # 按文件大小排序
total 12
drwxr-xr-x 2 root root 4096 Jul 8 15:02 29351
drwxr-xr-x 2 root root 4096 Jul 8 15:02 31333
drwxr-xr-x 2 root root 4096 Jul 8 15:02 common
lrwxrwxrwx 1 root root 5 Jul 8 18:58 current -> 31333
2、tree
(1)、命令简介
tree 是一个用于以树状结构递归显示目录和文件的命令行工具,比 ls -R 更直观清晰,特别适合查看复杂的目录结构。
注:部分Linux发行版默认不安装,安装命令如下
sudo apt install tree # Debian/Ubuntu
sudo yum install tree # CentOS/RHEL
sudo dnf install tree # Fedora
(2)、命令选项清单
#命令语法:tree [选项] [目录/文件]
选项 说明
-a 显示所有文件(包括隐藏文件)
-d 仅显示目录(不显示文件)
-L n 限制递归深度为 n 层
-f 显示文件的完整路径
-i 不缩进,单行显示(适合脚本处理)
-l 跟踪符号链接(默认不跟踪)
-P "*.txt" 只显示匹配模式的文件(如 .txt)
-I "*.log" 排除匹配模式的文件(如 .log)
-o 文件名 将结果输出到文件
-h 显示文件大小(人类可读格式)
--du 显示目录占用的磁盘空间
(3)、常用命令示例
root@master:~# tree ~ #查看家目录结构
.
└── snap
└── lxd
├── 29351
├── 31333
├── common
└── current -> 31333
6 directories, 0 files
root@master:~# tree -d #只列出目录(忽略文件)
.
└── snap
└── lxd
├── 29351
├── 31333
├── common
└── current -> 31333
6 directories
二、目录操作
常用命令:cd、pwd、mkdir、rmdir
1、cd
(1)、命令简介
cd(Change Directory)是 Linux/Unix 中最基础且最常用的命令之一,用于切换当前工作目录。
(2)、命令选项清单
#命令语法:cd [目录路径]
(3)、常用命令示例
root@master:~# cd #cd后未添加路径,默认切换到家目录
root@master:~# pwd
/root
root@master:~# cd ~ #~表示家目录,cd到家目录
root@master:~# pwd
/root
root@master:~# cd /usr/local # 绝对路径切换
root@master:/usr/local# pwd
/usr/local
root@master:/usr/local# cd lib/ # 相对路径切换(进入当前目录下的lib)
root@master:/usr/local/lib# pwd
/usr/local/lib
root@master:/usr/local/lib# cd . #一个.表示当前目录,cd切换后仍在当前目录
root@master:/usr/local/lib# pwd
/usr/local/lib
root@master:/usr/local/lib# cd ..#两个.表示上一级目录,cd切换后返回上一层目录
root@master:/usr/local# pwd
/usr/local
root@master:/usr/local/lib# cd ../.. #../..表示返回上两级目录,返回上几级目录,几个../即可
root@master:/usr# pwd
/usr
root@master:/usr/local# cd - #返回上一次访问目录,类似win下后退功能
/usr/local/lib
root@master:/usr/local/lib# pwd
/usr/local/lib
2、pwd
(1)、命令简介
pwd (Print Working Directory) 是 Linux/Unix 中最基础且最常用的命令之一,用于显示当前工作目录的绝对路径。
(2)、命令选项清单
#命令语法:pwd [选项]
选项 说明
-L (默认) 显示逻辑路径(包含符号链接的路径)
-P 显示物理路径(解析所有符号链接)
--help 显示帮助信息
--version 显示版本信息
(3)、常用命令示例
root@master:/usr# pwd #显示当前所在目录
/usr
3、mkdir
(1)、命令简介
mkdir (Make Directory) 是 Linux/Unix 中用于创建目录的基本命令。
(2)、命令选项清单
#命令格式:mkdir [选项] 目录名...
选项 说明
-p 递归创建目录(自动创建父目录)
-m 设置目录权限(类似 chmod)
-v 显示创建过程的详细信息
--help 显示帮助信息
--version 显示版本信息
(3)、常用命令示例
root@master:/# mkdir data #创建一个data目录
root@master:/# ls -ld data/
drwxr-xr-x 2 root root 4096 Jul 18 15:23 data/
root@master:/data# mkdir /data/demo1/ #使用绝对路径在/data/目录下创建demo1目录
root@master:/data# ls -ld /data/demo1/
drwxr-xr-x 2 root root 4096 Jul 18 15:24 /data/demo1/
root@master:/data# mkdir /data/demo1/A/B/ #A目录未创建情况下,无法直接创建B目录
mkdir: cannot create directory ‘/data/demo1/A/B/’: No such file or directory
root@master:/data# mkdir -p /data/demo1/A/B/ #使用-p可以直接递归创建多级目录
root@master:/data# ls -ld /data/demo1/A/B/
drwxr-xr-x 2 root root 4096 Jul 18 15:25 /data/demo1/A/B/
root@master:/data# mkdir -m 750 secure_dir #-m创建指定权限目录
root@master:/data# ls -all
total 16
drwxr-xr-x 4 root root 4096 Jul 18 15:26 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
drwxr-xr-x 3 root root 4096 Jul 18 15:25 demo1
drwxr-x--- 2 root root 4096 Jul 18 15:26 secure_dir
root@master:/data# mkdir "backup_$(date +%Y%m%d)" #根据当前日期创建目录
root@master:/data# ls -all
total 20
drwxr-xr-x 5 root root 4096 Jul 18 15:27 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
drwxr-xr-x 2 root root 4096 Jul 18 15:27 backup_20250718
drwxr-xr-x 3 root root 4096 Jul 18 15:25 demo1
drwxr-x--- 2 root root 4096 Jul 18 15:26 secure_dir
root@master:/data# mkdir project_{1..5} #创建project_1-5共5个目录
root@master:/data# ls -all
total 40
drwxr-xr-x 10 root root 4096 Jul 18 15:27 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
drwxr-xr-x 2 root root 4096 Jul 18 15:27 backup_20250718
drwxr-xr-x 3 root root 4096 Jul 18 15:25 demo1
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_1
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_2
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_3
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_4
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_5
drwxr-x--- 2 root root 4096 Jul 18 15:26 secure_dir
4、rmdir
(1)、命令简介
rmdir (Remove Directory) 是 Linux/Unix 中用于删除空目录的基本命令。
(2)、命令选项清单
#命令语法:rmdir [选项] 目录名...
#选项 说明
-p 递归删除目录及其空的父目录
--ignore-fail-on-non-empty 忽略因目录非空导致的错误
-v 显示删除过程的详细信息
--help 显示帮助信息
--version 显示版本信息
(3)、常用命令示例
root@master:/data# rmdir backup_20250718/ #删除空目录
root@master:/data# ls -al
total 36
drwxr-xr-x 9 root root 4096 Jul 18 15:30 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
drwxr-xr-x 3 root root 4096 Jul 18 15:25 demo1
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_1
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_2
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_3
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_4
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_5
drwxr-x--- 2 root root 4096 Jul 18 15:26 secure_dir
root@master:/data# rmdir -p demo1/A/B/ #递归删除空目录结构,不加-p参数仅删除B目录
root@master:/data# ls -all
total 32
drwxr-xr-x 8 root root 4096 Jul 18 15:31 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_1
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_2
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_3
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_4
drwxr-xr-x 2 root root 4096 Jul 18 15:27 project_5
drwxr-x--- 2 root root 4096 Jul 18 15:26 secure_dir
三、删除操作
常用命令:rm
1、rm
(1)、命令简介
rm (Remove) 是 Linux/Unix 系统中用于删除文件和目录的核心命令,需要谨慎使用。
(2)、命令选项清单
#命令语法:rm [选项] 文件或目录...
选项 说明
-f 强制删除,不提示确认
-i 交互式删除,每次删除前询问
-r/-R 递归删除目录及其内容
-d 删除空目录(类似 rmdir)
-v 显示删除过程的详细信息
--no-preserve-root 允许删除 /(极度危险!)
--preserve-root 默认保护根目录 /
-I 删除超过3个文件时提示一次确认
(3)、常用命令示例
root@master:/data# touch test{1..3} #创建5个空文件
root@master:/data# ll
total 8
drwxr-xr-x 2 root root 4096 Jul 18 15:34 ./
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ../
-rw-r--r-- 1 root root 0 Jul 18 15:34 test1
-rw-r--r-- 1 root root 0 Jul 18 15:34 test2
-rw-r--r-- 1 root root 0 Jul 18 15:34 test3
root@master:/data# rm test1 #删除test1文件
root@master:/data# ls -al
total 8
drwxr-xr-x 2 root root 4096 Jul 18 15:34 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
-rw-r--r-- 1 root root 0 Jul 18 15:34 test2
-rw-r--r-- 1 root root 0 Jul 18 15:34 test3
root@master:/data# rm test* #删除test开头文件
root@master:/data# ls -al
total 8
drwxr-xr-x 2 root root 4096 Jul 18 15:35 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 .
root@master:/data/A/B/C# pwd
/data/A/B/C
root@master:/data/A/B/C# cd /data/
root@master:/data# rm -r /data/A/B/ #删除A目录及其子目录(包含目录下文件)
root@master:/data# cd /data/A/B/C
bash: cd: /data/A/B/C: No such file or directory
root@master:/data# cd /data/A/B/
bash: cd: /data/A/B/: No such file or directory
root@master:/data# cd /data/A/
root@master:/data/A# pwd
/data/A
root@master:/data# rm -i test #-i参数会提示是否删除,输入y/n进行是/否确认
rm: remove regular empty file 'test'? y
root@master:/data# ls -all
total 12
drwxr-xr-x 3 root root 4096 Jul 18 15:40 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
四、文件操作
常用命令:touch、cp、mv
1、touch
(1)、命令简介
touch 是 Linux/Unix 系统中用于创建空文件和修改文件时间戳的实用命令。
(2)、命令选项清单
#命令语法:touch [选项] 文件名...
选项 说明
-a 只更改访问时间(access time)
-m 只更改修改时间(modification time)
-c 不创建新文件(仅修改现有文件时间戳)
-d 使用指定时间而非当前时间
-t 使用 [[CC]YY]MMDDhhmm[.ss] 格式的时间
-r 使用参考文件的时间
--help 显示帮助信息
--version 显示版本信息
(3)、常用命令示例
root@master:/data# touch test #创建名为test的空文件
root@master:/data# ls -all
total 8
drwxr-xr-x 2 root root 4096 Jul 18 15:43 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
-rw-r--r-- 1 root root 0 Jul 18 15:43 test
root@master:/data# touch -t 202312251830.00 test #修改test最后修改、读取时间为2023年12月25日18:30:00
root@master:/data# stat test
File: test
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 264546 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-12-25 18:30:00.000000000 +0000 #文件最后被读取的时间
Modify: 2023-12-25 18:30:00.000000000 +0000 #文件内容最后被修改的时间
Change: 2025-07-18 15:48:07.968952878 +0000 #文件元数据(权限、所有者等)最后变更的时间
Birth: 2025-07-18 15:43:02.177245532 +0000 #文件创建时间
root@master:/data# touch -a test #更新test文件访问时间
root@master:/data# stat test
File: test
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 264546 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-07-18 15:49:20.488880014 +0000 #文件最后被读取的时间
Modify: 2023-12-25 18:30:00.000000000 +0000 #文件内容最后被修改的时间
Change: 2025-07-18 15:49:20.488880014 +0000 #文件元数据(权限、所有者等)最后变更的时间
Birth: 2025-07-18 15:43:02.177245532 +0000 #文件创建时间
root@master:/data# touch -m test #更新test文件修改时间
root@master:/data# stat test
File: test
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 264546 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-07-18 15:49:20.488880014 +0000 #文件最后被读取的时间
Modify: 2025-07-18 15:49:28.376872025 +0000 #文件内容最后被修改的时间
Change: 2025-07-18 15:49:28.376872025 +0000 #文件元数据(权限、所有者等)最后变更的时间
Birth: 2025-07-18 15:43:02.177245532 +0000 #文件创建时间
2、cp
(1)、命令简介
cp (Copy) 是 Linux/Unix 系统中用于复制文件和目录的核心命令。
(2)、命令选项清单
#命令语法:
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
选项 说明
-i 覆盖前提示确认(交互模式)
-n 不覆盖已存在文件
-r/-R 递归复制目录
-a 归档模式(保留所有属性,等同于 -dR --preserve=all)
-v 显示复制过程详细信息
-p 保留文件属性(模式、所有权、时间戳)
-u 只复制源比目标新的文件
-l 创建硬链接而非复制
-s 创建符号链接(软链接)而非复制
--backup 覆盖前创建备份
--preserve 保留指定属性(mode,ownership,timestamps等)
--parents 保留源文件的目录结构
(3)、常用命令示例
root@master:/data# cp test test1 #复制test文件
root@master:/data# ls -al
total 8
drwxr-xr-x 2 root root 4096 Jul 18 15:52 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
-rw-r--r-- 1 root root 0 Jul 18 15:49 test
-rw-r--r-- 1 root root 0 Jul 18 15:52 test1
root@master:/data# mkdir demo
root@master:/data# cp test test1 demo/ #复制test test1到demo目录
root@master:/data# ls -al demo/
total 8
drwxr-xr-x 2 root root 4096 Jul 18 15:52 .
drwxr-xr-x 3 root root 4096 Jul 18 15:52 ..
-rw-r--r-- 1 root root 0 Jul 18 15:52 test
-rw-r--r-- 1 root root 0 Jul 18 15:52 test1
root@master:/data# cp demo/ demo1/ #cp无法直接复制目录
cp: -r not specified; omitting directory 'demo/'
root@master:/data# cp -r demo/ demo1/ #-r参数可以递归复制目录(等于win下目录复制)
root@master:/data# tree
.
├── demo
│ ├── test
│ └── test1
├── demo1
│ ├── test
│ └── test1
├── test
└── test1
2 directories, 6 files
root@master:/data# ls -al
total 16
drwxr-xr-x 4 root root 4096 Jul 18 15:54 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
drwxr-xr-x 2 root root 4096 Jul 18 15:52 demo
drwxr-xr-x 2 root root 4096 Jul 18 15:53 demo1
-rw-r--r-- 1 root root 0 Jul 18 15:49 test
-rw-r--r-- 1 root root 0 Jul 18 15:55 test1
root@master:/data# cp -i test test1 #-i参数会在存在同名文件时,会提示是否覆盖
cp: overwrite 'test1'? y
root@master:/data# cp test test1 #不加-i时直接覆盖
3、mv
(1)、命令简介
mv (Move) 是 Linux/Unix 系统中用于移动或重命名文件和目录的核心命令。
(2)、命令选项清单
#命令语法:
mv [选项] 源文件 目标文件
mv [选项] 源文件... 目标目录
选项 说明
-i 覆盖前提示确认(交互模式)
-n 不覆盖已存在文件
-v 显示移动过程详细信息
-u 只移动比目标新的文件
-b 覆盖前创建备份
--backup 指定备份方式(numbered/t/simple等)
-S 指定备份后缀
--strip-trailing-slashes 移除源参数末尾的斜杠
-t 指定目标目录(适合移动多个文件)
(3)、常用命令示例
root@master:/data# ll #目录结构如下
total 16
drwxr-xr-x 4 root root 4096 Jul 18 15:54 ./
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ../
drwxr-xr-x 2 root root 4096 Jul 18 15:52 demo/
-rw-r--r-- 1 root root 0 Jul 18 15:49 test
root@master:/data# mv test test3 #重命名test为test3
root@master:/data# ls -all
total 16
drwxr-xr-x 4 root root 4096 Jul 18 15:58 .
drwxr-xr-x 21 root root 4096 Jul 18 15:24 ..
drwxr-xr-x 2 root root 4096 Jul 18 15:52 demo
-rw-r--r-- 1 root root 0 Jul 18 15:49 test3
root@master:/data# mv test3 demo/ #将test3文件移动到demo目录,目录末尾注意添加/,目录不存在时会变为重命名操作
root@master:/data# ls demo/test3
demo/test3
root@master:/data# ls -al demo/test3
-rw-r--r-- 1 root root 0 Jul 18 15:52 demo/test3
root@master:/data# mv -i test3 demo/ #-i参数,操作时存在同名文件会提示是否覆盖,y-是,n-否
mv: overwrite 'demo/test3'? y
五、文件内容查看
常用命令:cat、less、more、head、tail
1、cat
(1)、命令简介
cat (concatenate) 是 Linux/Unix 系统中用于查看、创建和连接文件内容的基础命令。
(2)、命令选项清单
#命令语法:cat [选项] [文件...]
选项 说明
-n 显示行号(包括空行)
-b 显示行号(忽略空行)
-s 压缩连续空行为一行
-E 在每行末尾显示 $ 符号
-T 将制表符显示为 ^I
-A 相当于 -vET(显示所有特殊字符)
-v 显示非打印字符(除换行和制表符外)
--help 显示帮助信息
--version 显示版本信息
(3)、常用命令示例
root@master:/data# cat history.log #查看全部文件内容
Start-Date: 2024-09-11 14:18:37
Commandline: apt-get install --reinstall adduser
Reinstall: adduser:amd64 (3.118ubuntu5)
End-Date: 2024-09-11 14:18:37
root@master:/data# cat > newfile.txt #>为重定向操作,>表示写入,会直接覆盖文件,>>表示追加写入
test #输入的内容,然后ctrl+d保存
root@master:/data# cat newfile.txt
test
root@master:/data# cat test1 test2 #查看test1和2文件内容
1
2
root@master:/data# cat test* #查看test开头文件内容
1
2
root@master:/data# cat test1 test2 > test #test1、test2文件写入test文件,相当于合并
cat: 3: No such file or directory
root@master:/data# cat test
1
2
root@master:/data# cat -n test #输出带行号的文本内容
1 1
2 2
root@master:/data# cat <<EOF > config.conf #测试文本可以替换为多行需要输入的字符
测试文本
EOF
root@master:/data# cat config.conf
测试文本
2、less/more
(1)、命令简介
less 和 more 都是 Linux/Unix 系统中用于分页查看文件内容的命令,比 cat 更适合查看大文件。
(2)、命令选项清单
命令语法:
less [选项] 文件名
more [选项] 文件名
less选项:
选项 说明
-N 显示行号
-i 忽略搜索时的大小写
-S 截断长行(不换行)
-F 文件小于一屏时自动退出
-X 退出时不清屏
+F 实时跟踪文件变化(类似 tail -f)
交互命令(查看时使用)
命令 说明
空格/f 向下翻一页
b 向上翻一页
↓/j 向下移动一行
↑/k 向上移动一行
/pattern 向前搜索
?pattern 向后搜索
n 下一个匹配项
N 上一个匹配项
g 跳到文件开头
G 跳到文件末尾
:n 查看下一个文件(多文件时)
:p 查看上一个文件(多文件时)
v 进入编辑器(如vim)
h 显示帮助
q 退出
more选项:
选项 说明
-d 显示提示信息
-f 强制处理特殊字符
-p 不清屏,从顶部开始显示
-c 从上到下显示内容
交互命令
命令 说明
空格 向下翻一页
回车 向下翻一行
b 向上翻一页
/pattern 搜索字符串
= 显示当前行号
:f 显示文件名和行号
q 退出
使用建议
优先使用 less:
功能更丰富
支持回看和反向搜索
已成为大多数系统的默认分页器
more 适用场景:
老式系统兼容性需求
简单的文件浏览(当 less 不可用时)
性能比较
对于超大文件(GB级别):
less 加载更快(只读取显示部分)
more 会预读更多内容
内存占用:
less 更节省内存
more 会缓存更多内容
(3)、常用命令示例
root@master:/data# less demo.tar.gz #查看压缩文件内容
-rw-r--r-- root/root 13 2025-07-18 16:14 ./config.conf
-rw-r--r-- root/root 84917 2025-07-18 16:07 ./history.log
-rw-r--r-- root/root 5 2025-07-18 16:09 ./newfile.txt
-rw-r--r-- root/root 4 2025-07-18 16:12 ./test
-rw-r--r-- root/root 2 2025-07-18 16:11 ./test1
-rw-r--r-- root/root 2 2025-07-18 16:11 ./test2
demo.tar.gz (END) #q退出
root@master:/data#
root@master:/data# less -p "apt" history.log #查看文件内apt(高亮显示)关键字,进入后使用交互命令进行操作
root@master:/data# more history.log #分页查看文件,执行后使用交互命令进行操作
root@master:/data# ls -l /etc | more #分页查命令执行结果,执行后使用交互命令进行操作
root@master:/data# more +/"apt" history.log #从第一个匹配apt关键字位置查看,执行后使用交互命令进行操作
3、head/tail
(1)、命令简介
head 和 tail 是 Linux/Unix 系统中用于查看文件开头或结尾部分内容的实用命令,特别适合处理日志文件和大文件。
(2)、命令选项清单
#命令语法:
head [选项] 文件名
选项 说明
-n <行数> 显示前N行(默认10行)
-c <字节数> 显示前N个字节
-q 不显示文件名标题(多文件时)
-v 总是显示文件名标题
#命令格式:
tali [选项] 文件名
选项 说明
-n <行数> 显示最后N行(默认10行)
-c <字节数> 显示最后N个字节
-f 实时追踪文件变化(监控日志)
-F 类似-f,但会重试(适合轮转日志)
-q 不显示文件名标题
-v 总是显示文件名标题
(3)、常用命令示例
head命令:
root@master:/data# head history.log #从文件头查看,不加任何参数默认输出10行
Start-Date: 2024-09-11 14:18:37
Commandline: apt-get install --reinstall adduser
Reinstall: adduser:amd64 (3.118ubuntu5)
End-Date: 2024-09-11 14:18:37
Start-Date: 2024-09-11 14:18:39
Commandline: apt-get install --reinstall apt
Reinstall: apt:amd64 (2.4.5)
End-Date: 2024-09-11 14:18:40
root@master:/data# head -n 5 history.log #查看前5行数据
Start-Date: 2024-09-11 14:18:37
Commandline: apt-get install --reinstall adduser
Reinstall: adduser:amd64 (3.118ubuntu5)
End-Date: 2024-09-11 14:18:37
root@master:/data# head -c 10 history.log #查看文件前10字节数据
Start-Dat
tail命令:
root@master:/data# tail history.log #从文件尾查看,不加任何参数默认输出10行
Start-Date: 2025-07-15 06:01:56
Commandline: /usr/bin/unattended-upgrade
Upgrade: python3-problem-report:amd64 (2.20.11-0ubuntu82.8, 2.20.11-0ubuntu82.9)
End-Date: 2025-07-15 06:01:56
Start-Date: 2025-07-18 15:09:07
Commandline: apt install tree
Install: tree:amd64 (2.0.2-1)
End-Date: 2025-07-18 15:09:07
root@master:/data# tail -n 5 history.log #查看最后5行数据
Start-Date: 2025-07-18 15:09:07
Commandline: apt install tree
Install: tree:amd64 (2.0.2-1)
End-Date: 2025-07-18 15:09:07
root@master:/data# tail -c 10 history.log #查看文件最后10字节数据
15:09:07
六、查找文件
1、find
(1)、命令简介
find 是 Linux/Unix 系统中功能最强大的文件搜索工具,可以根据各种条件递归查找文件和目录。
(2)、命令选项
#命令语法:find [路径...] [表达式]
操作符 说明 优先级
( ) 分组 最高
! -not 逻辑非 高
-a -and 逻辑与(默认) 中
-o -or 逻辑或 低
, 多表达式执行 最低
选项 说明
-P 不跟随符号链接(默认)
-L 跟随符号链接
-H 仅跟随命令行指定的符号链接
-xdev 不跨越文件系统
-mount 同 -xdev
-maxdepth N 最大搜索深度
-mindepth N 最小搜索深度
表达式 说明
-mtime N 文件数据修改时间(天)
-mmin N 文件数据修改时间(分钟)
-atime N 文件访问时间
-ctime N 文件状态改变时间
-newer FILE 比FILE更新的文件
-daystart 从今天开始计算时间
-size N[cwbkMG] 文件大小(c:字节,w:字,b:块)
-empty 空文件或目录
-perm MODE 精确权限匹配
-perm -MODE 所有权限位必须设置
-perm /MODE 任意权限位匹配
-readable 可读文件
-writable 可写文件
-user NAME 属于指定用户的文件
-group NAME 属于指定组的文件
-nouser 无属主的文件
-nogroup 无属组的文件
-print 打印完整路径(默认)
-print0 用NULL分隔结果(适合xargs -0)
-printf FORMAT 自定义输出格式
-ls 显示详细文件信息
-delete 删除匹配文件
-exec COMMAND \; 对每个文件执行命令
-exec COMMAND {} + 批量执行命令
-ok COMMAND \; 交互式确认执行
(3)、常用命令示例
find /path -name "*.txt" # 查找.txt结尾的文件
find /path -iname "*.TXT" # 不区分大小写
find /path -name "file[1-5].log" # 使用通配符
find /path -type f # 只找文件
find /path -type d # 只找目录
find /path -type l # 只找符号链接
find /path -mtime -7 # 7天内修改过的文件
find /path -atime +30 # 30天前访问过的文件
find /path -cmin -60 # 60分钟内状态改变的文件
find /path -size +10M # 大于10MB的文件
find /path -size -1G # 小于1GB的文件
find /path -size 0 # 空文件
find /path -perm 644 # 权限精确匹配644
find /path -perm -u=r # 用户有读权限
find /path -perm /g=w # 组有写权限
find /path -name "*.tmp" -delete # 删除找到的文件
find /path -name "*.jpg" -exec cp {} /backup \; # 复制找到的文件
find /path -type f -exec chmod 644 {} \; # 修改权限
find /path \( -name "*.mp3" -o -name "*.flac" \) # 找mp3或flac
find /path -name "*.log" ! -user root # 非root用户的log文件
find /path -maxdepth 2 -name "*.conf" # 最多搜索2层目录
find /tmp -type f -mtime +7 -delete #查找并删除7天前的临时文件
find /usr/bin -type f -perm /a=x #查找所有可执行文件
find /var/log -name "*.log" -size +10M -exec gzip {} \; #查找并压缩日志文件
find . -type f -name "*.php" | wc -l #查找并统计PHP文件数量
find /etc -type f -name "*.conf" -mtime -1 #查找最近1天内修改的配置文件
find / \( -name "*.tmp" -o -name "*.bak" \) -mtime +30 -delete #查找30天前名字为*.tmp或*.bak文件删除
2、locate
(1)、命令简介
locate 是 Linux 系统中用于快速查找文件的命令,它通过搜索预建的数据库来定位文件,速度比 find 快很多。
(2)、命令选项清单
#命令语法:locate [选项] 文件名模式
选项 说明
-i 忽略大小写
-l N 限制显示结果数量
-r 使用正则表达式
-c 只显示匹配数量
-e 只显示存在的文件
-b 只匹配文件名(不含路径)
-S 显示数据库统计信息
#注:部分版本linux可能未安装locate,需要手动安装
#Debian/Ubuntu 系统:
sudo apt update
sudo apt install mlocate # 或 sudo apt install plocate(更快的现代实现)
#RHEL/CentOS/Fedora 系统
sudo yum install mlocate # CentOS 7 或更早版本
sudo dnf install mlocate # CentOS 8+/Fedora
#Arch Linux
sudo pacman -S mlocate
#openSUSE
sudo zypper install mlocate
(3)、常用命令示例
root@master:/data# updatedb #更新locate查询使用的数据库
root@master:/data# locate newfile.txt #查询文件名为newfile.txt的文件
/data/newfile.txt
root@master:/data# locate -i "Newfile.txt" #忽略文件名大小写
/data/Newfile.txt
/data/newfile.txt
root@master:/data# locate -i -c "Newfile.txt" #忽略大小写,并统计匹配数量
2
3、whereis
(1)、命令简介
whereis 是 Linux 系统中用于定位命令二进制文件、源代码和手册页的实用工具。
(2)、命令选项清单
#命令语法:whereis [选项] 命令名
选项 说明
-b 只搜索二进制文件
-m 只搜索手册页
-s 只搜索源代码
-u 搜索不完整的条目(缺少某种类型的文件)
-B 指定二进制文件搜索路径
-M 指定手册页搜索路径
-S 指定源代码搜索路径
-f 终止路径列表(与 -B/-M/-S 一起使用)
(3)、常用命令示例
root@master:/data# whereis ls #查找ls命令的所有相关文件,输出ls对应二进制文件和压缩版手册页
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
root@master:/data# whereis -b ls #只查找ls命令对应的压缩版手册页
ls: /usr/bin/ls
root@master:/data# whereis -m ls #只查找ls命令手册页位置
ls: /usr/share/man/man1/ls.1.gz、
root@master:/data# whereis docker || echo "未安装" #查找命令是否安装
docker: /usr/bin/docker /etc/docker /usr/libexec/docker /usr/share/man/man1/docker.1.gz
4、which
(1)、命令简介
which 是 Linux/Unix 系统中用于定位命令的可执行文件路径的实用工具。
显示命令的完整执行路径
检查命令是否存在于用户的 PATH 环境变量中
识别当前会话中实际执行的命令版本
(2)、命令选项清单
#命令语法:which [选项] 命令名...
选项 说明
-a 显示所有匹配路径(而不仅是第一个)
--skip-alias 忽略命令别名
--skip-functions 忽略shell函数
--read-functions 读取shell函数
-i 忽略大小写
--version 显示版本信息
--help 显示帮助信息
(3)、常用命令示例
root@master:/data# which ls #查找命令路径
/usr/bin/ls
root@master:/data# which ls grep awk #查找多个命令路径
/usr/bin/ls
/usr/bin/grep
/usr/bin/awk
root@master:/data# which docker >/dev/null && echo "已安装" || echo "未安装" #检查命令是否存在
已安装