文件与目录操作命令

文件与目录操作

一、查看目录内容

常用命令:ls、tree

1、ls

(1)、命令简介

ls (List Directory Contents)是 Linux/Unix 中最基础且最常用的命令之一,用于列出目录内容 ,包括文件、子目录及其属性信息。以下是 ls 命令的完整指南:

(2)、命令选项清单

text-x-sh 复制代码
#命令语法: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)、常用命令示例

text-x-sh 复制代码
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发行版默认不安装,安装命令如下

text-x-sh 复制代码
sudo apt install tree       # Debian/Ubuntu
sudo yum install tree       # CentOS/RHEL
sudo dnf install tree       # Fedora

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:tree [选项] [目录/文件]
选项				说明
-a			显示所有文件(包括隐藏文件)
-d			仅显示目录(不显示文件)
-L n		限制递归深度为 n 层
-f			显示文件的完整路径
-i			不缩进,单行显示(适合脚本处理)
-l			跟踪符号链接(默认不跟踪)
-P "*.txt"	只显示匹配模式的文件(如 .txt)
-I "*.log"	排除匹配模式的文件(如 .log)
-o 文件名	将结果输出到文件
-h			显示文件大小(人类可读格式)
--du		显示目录占用的磁盘空间

(3)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
#命令语法:cd [目录路径]

(3)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
 #命令语法:pwd [选项]
 选项			说明
-L (默认)	显示逻辑路径(包含符号链接的路径)
-P			显示物理路径(解析所有符号链接)
--help		显示帮助信息
--version	显示版本信息

(3)、常用命令示例

text-x-sh 复制代码
root@master:/usr# pwd #显示当前所在目录
/usr

3、mkdir

(1)、命令简介

mkdir (Make Directory) 是 Linux/Unix 中用于创建目录的基本命令。

(2)、命令选项清单

text-x-sh 复制代码
#命令格式:mkdir [选项] 目录名...
选项				说明
-p			递归创建目录(自动创建父目录)
-m			设置目录权限(类似 chmod)
-v			显示创建过程的详细信息
--help		显示帮助信息
--version	显示版本信息

(3)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
#命令语法:rmdir [选项] 目录名...
#选项								说明
-p							递归删除目录及其空的父目录
--ignore-fail-on-non-empty	忽略因目录非空导致的错误
-v							显示删除过程的详细信息
--help						显示帮助信息
--version					显示版本信息

(3)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
 #命令语法:rm [选项] 文件或目录...
 选项						说明
-f						强制删除,不提示确认
-i						交互式删除,每次删除前询问
-r/-R					递归删除目录及其内容
-d						删除空目录(类似 rmdir)
-v						显示删除过程的详细信息
--no-preserve-root		允许删除 /(极度危险!)
--preserve-root			默认保护根目录 /
-I						删除超过3个文件时提示一次确认

(3)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
#命令语法:touch [选项] 文件名...
选项				说明
-a			只更改访问时间(access time)
-m			只更改修改时间(modification time)
-c			不创建新文件(仅修改现有文件时间戳)
-d			使用指定时间而非当前时间
-t			使用 [[CC]YY]MMDDhhmm[.ss] 格式的时间
-r			使用参考文件的时间
--help		显示帮助信息
--version	显示版本信息

(3)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
#命令语法:
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
选项				说明
-i			覆盖前提示确认(交互模式)
-n			不覆盖已存在文件
-r/-R		递归复制目录
-a			归档模式(保留所有属性,等同于 -dR --preserve=all)
-v			显示复制过程详细信息
-p			保留文件属性(模式、所有权、时间戳)
-u			只复制源比目标新的文件
-l			创建硬链接而非复制
-s			创建符号链接(软链接)而非复制
--backup	覆盖前创建备份
--preserve	保留指定属性(mode,ownership,timestamps等)
--parents	保留源文件的目录结构

(3)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
#命令语法:
mv [选项] 源文件 目标文件
mv [选项] 源文件... 目标目录
选项								说明
-i							覆盖前提示确认(交互模式)
-n							不覆盖已存在文件
-v							显示移动过程详细信息
-u							只移动比目标新的文件
-b							覆盖前创建备份
--backup					指定备份方式(numbered/t/simple等)
-S							指定备份后缀
--strip-trailing-slashes	移除源参数末尾的斜杠
-t							指定目标目录(适合移动多个文件)

(3)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
#命令语法:cat [选项] [文件...]
选项				说明
-n			显示行号(包括空行)
-b			显示行号(忽略空行)
-s			压缩连续空行为一行
-E			在每行末尾显示 $ 符号
-T			将制表符显示为 ^I
-A			相当于 -vET(显示所有特殊字符)
-v			显示非打印字符(除换行和制表符外)
--help		显示帮助信息
--version	显示版本信息

(3)、常用命令示例

text-x-sh 复制代码
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)、命令简介

lessmore 都是 Linux/Unix 系统中用于分页查看文件内容 的命令,比 cat 更适合查看大文件。

(2)、命令选项清单

text-x-sh 复制代码
命令语法:
less [选项] 文件名
more [选项] 文件名

less选项:

text-x-sh 复制代码
选项							说明
-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选项:

text-x-sh 复制代码
选项							说明
-d						显示提示信息
-f						强制处理特殊字符
-p						不清屏,从顶部开始显示
-c						从上到下显示内容
交互命令
命令							说明
空格						向下翻一页
回车						向下翻一行
b						向上翻一页
/pattern				搜索字符串
=						显示当前行号
:f						显示文件名和行号
q						退出

使用建议

  1. 优先使用 less

    • 功能更丰富

    • 支持回看和反向搜索

    • 已成为大多数系统的默认分页器

  2. more 适用场景

    • 老式系统兼容性需求

    • 简单的文件浏览(当 less 不可用时)

性能比较

  • 对于超大文件(GB级别):

    • less 加载更快(只读取显示部分)

    • more 会预读更多内容

  • 内存占用:

    • less 更节省内存

    • more 会缓存更多内容

(3)、常用命令示例

text-x-sh 复制代码
 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)、命令简介

headtail 是 Linux/Unix 系统中用于查看文件开头或结尾部分内容的实用命令,特别适合处理日志文件和大文件。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:
head [选项] 文件名
选项				说明
-n <行数>	显示前N行(默认10行)
-c <字节数>	显示前N个字节
-q			不显示文件名标题(多文件时)
-v			总是显示文件名标题

#命令格式:
tali [选项] 文件名
选项				说明
-n <行数>	显示最后N行(默认10行)
-c <字节数>	显示最后N个字节
-f			实时追踪文件变化(监控日志)
-F			类似-f,但会重试(适合轮转日志)
-q			不显示文件名标题
-v			总是显示文件名标题

(3)、常用命令示例

head命令:

text-x-sh 复制代码
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命令:

text-x-sh 复制代码
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)、命令选项

text-x-sh 复制代码
#命令语法: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)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
#命令语法: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)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
#命令语法:whereis [选项] 命令名
选项			说明
-b		只搜索二进制文件
-m		只搜索手册页
-s		只搜索源代码
-u		搜索不完整的条目(缺少某种类型的文件)
-B		指定二进制文件搜索路径
-M		指定手册页搜索路径
-S		指定源代码搜索路径
-f		终止路径列表(与 -B/-M/-S 一起使用)

(3)、常用命令示例

text-x-sh 复制代码
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)、命令选项清单

text-x-sh 复制代码
#命令语法:which [选项] 命令名...
选项						说明
-a					显示所有匹配路径(而不仅是第一个)
--skip-alias		忽略命令别名
--skip-functions	忽略shell函数
--read-functions	读取shell函数
-i					忽略大小写
--version			显示版本信息
--help				显示帮助信息

(3)、常用命令示例

text-x-sh 复制代码
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 "未安装" #检查命令是否存在
已安装
相关推荐
大树887 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠7 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质8 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush48 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5208 小时前
Linux 11 动态监控指令top
linux
Inhand陈工9 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智9 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩9 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_10 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈10 小时前
Unix 与 Linux 异同小叙
linux·服务器·unix