1. 创建
1.1 mkdir 创建新目录
: mkdir [选项] 目录位置及名称....
| 命令 | 效果 |
|---|---|
| -p | 递归建立 |
| -v | 显示过程 |
[root@localhost data]# mkdir a b c d //创建多个目录
[root@localhost data]# ls
a b c d
[root@localhost data]# mkdir -p aaa/bbb/cccc //递归创建目录
[root@localhost data]# ls
a aaa b c d
[root@localhost data]# tree //以树状图形式列出目录的内容,显示出文件目录结构
.
├── a
├── aaa
│ └── bbb
│ └── cccc
├── b
├── c
└── d
[root@localhost data]# mkdir `date` //创建含有当天日期、时间的目录
[root@localhost data]# ls
03月 16:32:27 28日 2024年 CST 星期四
1.2 touch 创建空文件
: touch 文件名.....
- 文件已存在 : touch作用是 刷新文件时间
- 文件不存在 : touch作用是 新建文件 (空文件)
1.3 ln 创建链接文件
为文件或目录建立链接文件,类似于windows系统的快捷方式
链接文件类型分为硬链接和软链接
1.3.1 硬链接
: ln 源文件(绝对路径) 硬链接位置
多了一种找到文件的方法 ( 无法对文件夹做硬链接 )
硬链接(hard link, 也称链接 )就是一个文件的一个或多个文件名, 把文件名和计算机文件系统使用的节点号链接起来。可以将它理解为一个 “指向原始文件 inode 的指针”, 系统不为它分配独立的 inode 和 文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。
硬链接引用的是文件在文件系统中的物理索引(也称为inode)。当移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。
1.3.2 软链接
: ln -s 源文件(绝对路径) 软连接位置
软链接又叫符号链接,这个文件包含了另一个文件的路径名。 可以是任意文件或目录,可以链接不同文件系统的文件。
1.3.3 两者区别
| 对比项 | 硬链接 | 软链接 |
|---|---|---|
| 本质 | 本质是同一个文件 | 本质不是同一个文件 |
| inode(身份证号) | 相同 | 不同 |
| 连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
| 文件夹 | 不支持 | 支持 |
| 删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
| 文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
| 文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
- 注意!只用软连接,不用硬连接
2. 复制
cp 复制文件或目录
:cp [选项]... 源文件 存放点/可以改名也可以不改名
| 命令 | 效果 |
|---|---|
| -i | 提醒覆盖 |
| -f | 不提醒,强制覆盖 |
| -p | 保留权限的复制 (有缺陷) |
| -a | 更强大的保留权限(完整保留所有的信息),可以替代-r |
| -r | 递归复制所有文件及子目录 (复制文件夹一定要加) |
| -u | 相当于增备,差异备份(只对文件夹起作用) |
[root@localhost data]# cp /etc/passwd /etc/shadow /opt //复制多个文件时目标必须是目录,不能是文件,且目录要存在。
[root@localhost data]# cp /etc/passwd /etc/shadow /opt/f111.txt //复制多个文件时目标如果不是目录,系统会提示无法复制。
cp: 目标"/opt/f111.txt" 不是目录
3. 移动 / 改名
mv (move) 移动或改名 / 移动并改名
:mv [选项] 源文件 目的地
| 选项 | 效果 |
|---|---|
| -f | 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖 |
| -i | 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项) |
| -n | 如果目标文件已经存在,则不会覆盖移动,而且不询问用户 |
| -v | 显示文件或目录的移动过程 |
- 源文件不改变路径就是 改名 ( 不可以批量改名,只能一个个改;想批量改名需要写脚本 )
- 源文件改变路径就是 移动 ( 也可以移动并且修改名字 )
rename 可以批量修改统一制式(后缀名)文件
:rename 旧字符 新字符 目标文件
4. 删除
rm (remove) 删除文件或目录
:rm [选项] 要删除的文件或目录
| 选项 | 效果 |
|---|---|
| -r | 递归((删除目录时要加-r,将指定目录下的所有文件和子目录一并删除)) |
| -f | 强制 |
- 删除文件后空间不释放:有别的用户在使用这个文件,造成空间不释放,其他人退出使用该文件后空间会被释放。
shred
:shred [选项]... 文件...
rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安全删除文件
5.查找
which 查找命令所在位置
:which 命令(常用外部命令)
搜索范围由环境变量 PATH决定 (echo $PATH).在PATH变量指定的路径中,搜索某个系统命令的位置 。
whereis
:whereis 命令
用来查找命令的具体位置。可以查看到二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
locate 查找文件
: locate [选项] 待查找文件
| 选项 | 效果 |
|---|---|
| -i | 不区分大小写的搜索 |
| -n N | 只列举前N个匹配项目 |
找到是系统中的数据库
- 缺点:不是实时查找,为模糊查找
- 优点:快,可以在搜寻数据库时快速找到档案
find 精确查找
: find [查找范围] [查找条件表达式] [处理动作]
- 范围:你要找的文件范围,不写就是默认在当前文件夹
- 条件表达式: 选项 + 表达式,描述你要找的文件
- 处理动作:对找到的文件进行处理(删除,复制,移动,显示)
常用查找条件类型
| 查找类型 | 关键字 | 说明 |
|---|---|---|
| 按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname "文件名称" 不区分大小写 |
| 按文件大小查找 | -size | 根据目标文件的大小进行查找 ,一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件 ;常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
| 按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
| 按文件类型查找 | -type | 根据文件的类型进行查找 ,文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
| 按时间戳查找 | -mtime | find / -mtime +30 //查找根下大于30天的文件 (现阶段就记住这一个) |
| 按inode号 | -inum | 根据文件inode号查找 |
- 按名称查找
[root@localhost data]#find /etc/ -name "*.conf"
-name 区分大小写
-iname 不区分大小写
- 按文件大小查找
[root@test1 opt]# find -size 1k //查找(0,1]k的文件
find -size 1G:查找的是从0G到1G,不包括0G,即(0,1]。
find -size 2G:查找的是从1G到2G,不包括1G,即(1,2]。
find -size 1024M:查找的是从1023M到1024M,不包括1023M,即(1023,1024]。
find -size 1024M 和 1G 一样么?
1024M 表示 1023M ~ 1024M,不包括 1023M。
1G 表示 0G ~1G,不包括 0G。
故使用 find -size 1024M 查找更加精准。
10k、-10k、+10k的大小范围分别是多少?
-size 10k :表示9k到10k,包括10k、不包括9k,即(9,10]
-size -10k :表示9k以内,包括9k,即 [0,9]
-size +10k :表示10k以上,不包括10k,即(10,+∞)
- 按时间查找
find / -mtime +30 //查找根下大于30天的文件
- 按inode号查找
- 找到文件并删除的三种方式
find -name "*.img" -delete
find -name "*.img" -exec rm -rf {} \;
find -name "*.img" | xargs rm -rf
使用find命令实现多个查找条件
各表达式之间使用逻辑运算符
-a and 与
-o or 或
-not 或 ! 取反 (指除了XXX)
【-a 优先级比 -o 高】
处理动作
| 处理动作 | 效果 |
|---|---|
| 默认的处理动作,显示至屏幕 | |
| -fls file | 查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file |
| -ls | 类似于对查找到的文件执行"ls -dils"命令格式输出 |
| -delete | 删除查找到的文件,慎用! |
| -exec COMMAND {} \; | 对查找到的每个文件执行由COMMAND指定的命令 |
| -ok COMMAND {} \; | 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认 |
| {} | 用于引用查找到的文件名称自身 |
```举例
找到/var/log目录下 30天以上 大于1G 以log结尾的普通文件
find /var/log -mtime +30 -size +1G -name “*log” -type f
找到/var/log目录下 30天以上 大于1G 以log结尾的普通文件 移动到/data
find /var/log -mtime +30 -size +1G -name “*log” -type f -exec mv { } /data \