文件与目录操作命令

发布于:2025-08-05 ⋅ 阅读:(11) ⋅ 点赞:(0)

文件与目录操作

一、查看目录内容

常用命令: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)、命令简介

lessmore 都是 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						退出

使用建议

  1. 优先使用 less

    • 功能更丰富

    • 支持回看和反向搜索

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

  2. 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)、命令简介

headtail 是 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 "未安装" #检查命令是否存在
已安装

网站公告

今日签到

点亮在社区的每一天
去签到