文章目录
一、基础知识
1.1 inode和block
- 存储设备被格式化为文件系统后,会有两部分,一部分是inode,一部分是block,
inode是记录了linux系统中所有的文件的一些元息,包括文件的类型,拥有者,所属组,链接数(指向文件名的路径的个数),文件的大小,时间戳等等。 - block是用来存储数据的。
- 允许不同文件的indoe是相同的
1.2 查看文件的inode
$ ll -i a.txt
1407374883849193 -rw-r--r-- 1 ybx 197609 0 12月 2 16:49 a.txt
1.3 cp和mv命令的区别
cp是新建一个inode号,在inode表中新建一个目录项,将名称与inode编号关联,拷贝数据生成新文件。
mv在重命名时,相当于换了新的目录项,并不影响inode表(除时间戳)或磁盘上的数据位置
1.4 参考
1.5 硬链接
- 同一个inode节点的链接称为硬链接
- 只有文件才能创建硬链接
- 硬链接的文件的内容是相同的,修改其中一个文件会影响到其他的文件
- 创建a.txt的硬链接
$ ln a.txt a1.txt
- 查看硬链接的个数,数字变成2
$ ll a.txt
-rw-r--r-- 2 ybx 197609 0 12月 2 16:49 a.txt
1.6 软链接
软链接只是源文件的一个标记,删除源文件,则查看软链接没有任何的效果
1.7 查看每个硬盘分区的inode总数和已使用
df -i
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
C:/Program Files/Git - - - - /
D: - - - - /d
二、基础命令
2.1 查看文件的创建时间
- stat 文件名
$ stat b.txt
File: b.txt
Size: 49 Blocks: 1 IO Block: 65536 regular file
Device: b64f166ch/3058636396d Inode: 3096224743823644 Links: 1
Access: (0644/-rw-r--r--) Uid: (197609/ ybx) Gid: (197609/ UNKNOWN)
Access: 2019-12-02 16:00:54.000451100 +0800
Modify: 2019-12-02 15:48:44.435701000 +0800
Change: 2019-12-02 15:59:05.376818000 +0800
Birth: 2019-12-02 15:13:28.640534200 +0800
2.2 三种时间介绍
- access Time ——文件的最近访问时间
只要读取,文件的时间就会改变
对应的Access项
$ stat b.txt
File: b.txt
Size: 49 Blocks: 1 IO Block: 65536 regular file
Device: b64f166ch/3058636396d Inode: 3096224743823644 Links: 1
Access: (0644/-rw-r--r--) Uid: (197609/ ybx) Gid: (197609/ UNKNOWN)
Access: 2019-12-02 16:36:02.037409800 +0800
Modify: 2019-12-02 15:48:44.435701000 +0800
Change: 2019-12-02 15:59:05.376818000 +0800
Birth: 2019-12-02 15:13:28.640534200 +0800
- modify time 文件的修改时间
只要文件被修改,修改时间就会变化
ybx@DESKTOP-PVQFC1H MINGW64 ~/Desktop/A
$ stat b.txt
File: b.txt
Size: 61 Blocks: 1 IO Block: 65536 regular file
Device: b64f166ch/3058636396d Inode: 1688849860559800 Links: 1
Access: (0644/-rw-r--r--) Uid: (197609/ ybx) Gid: (197609/ UNKNOWN)
Access: 2019-12-02 16:41:27.726665700 +0800
Modify: 2019-12-02 16:40:52.844580200 +0800
Change: 2019-12-02 16:40:52.922542000 +0800
Birth: 2019-12-02 15:13:28.640534200 +0800
- change time 文件属性
只要文件的属性被改变,对应的时间就会被改变
$ stat b.txt
File: b.txt
Size: 61 Blocks: 1 IO Block: 65536 regular file
Device: b64f166ch/3058636396d Inode: 1688849860559800 Links: 1
Access: (0644/-rw-r--r--) Uid: (197609/ ybx) Gid: (197609/ UNKNOWN)
Access: 2019-12-02 16:43:06.411667700 +0800
Modify: 2019-12-02 16:40:52.844580200 +0800
Change: 2019-12-02 16:40:52.922542000 +0800
Birth: 2019-12-02 15:13:28.640534200 +0800
2.3 touch修改文件的时间
- 修改access time
$ touch -a b.txt
- 修改Modify time
$ touch -d '15:02:03' b.txt
2.4 touch指令创建文件的默认权限
- touch a.txt
$ ll a.txt
-rw-r--r-- 1 ybx 197609 0 12月 2 16:49 a.txt
三、linux中的查找
3.1 find命令
- 查找目录:find /(查找范围) -name ‘查找关键字’ -type d
- 查找文件:find /(查找范围) -name 查找关键字 -print
3.2 find查找条件
- 可以根据正则表达式去匹配要找的文件或者目录
$ find /c/Users/ybx/Desktop/A -name 'a1.txt'
/c/Users/ybx/Desktop/A/a1.txt
- 当前目录下的查找
$ find . -name '*.txt'
./.txt
./a1.txt
./a2.txt
./a6.txt
./b.txt
./b1.txt
./c1.txt
./d1.txt
- 用 -o 连接匹配条件
$ find . -name 'a.txt' -o -name 'b.txt'
./b.txt
- 基于正则表达式匹配
$ find . -regex '.*\(\a.txt\|\b.txt\)$'
./a1.txt
./a2.txt
./a6.txt
./b.txt
./b1.txt
./c1.txt
./d1.txt
- 否定参数
$ find . ! -name 'a.txt'
.
./.txt
./a1.txt
./a2.txt
./a6.txt
./b.txt
./b1.txt
./c1.txt
./d1.txt
- 根据文件类型搜索
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo
$ find . -type d
.
./A
./B
- 查找3天内被修改过的文件
$ find . -ctime -3 -name '*'
.
./.txt
./A
./a1.txt
./a2.txt
./a6.txt
./B
./b.txt
./b1.txt
./c1.txt
根据文件时间戳进行搜索
find . -type f 时间戳
UNIX/Linux文件系统每个文件都有三种时间戳:
- 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
- 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
- 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
3.2 参考
四、回退撤销命令
4.1 vim中的回退和前进
前提:在esc模式下
- 后退
u - 前进
ctrl + r
4.2 cd命令
- 回退到上一级
$ cd ..
- 返回上次执行的目录
$ cd -
/c/Users/ybx/Desktop/A
- 回到用户主目录
$ cd
- 进入当前目录
cd .
- 进入根目录
cd /
4.3 查看文件大小
du -h a.txt