Day 16天 操作系统文件属性介绍和正则符号

00. 课程介绍部分

  1. 文件属性索引信息 inode/block 读取数据原理
  2. 文件属性链接概念 硬链接/软链接
  3. 系统正则符号介绍
    系统基础符号
    系统通配符号
    系统正则符号 基础正则 扩展正则

02.回顾 文件属性介绍

文件属性中文件权限概念: rwx - 权限赋予用户(9位) 数值表示权限 rwx-w--wx 723
根据权限找出相应文件数据:
根据权限找出相应文件数据:-perm 权限参数

[root@oldboy66 oldboy]# find /oldboy -type f -perm 666
/oldboy/oldboy.txt
[root@oldboy66 oldboy]# find /oldboy -type f -perm 644
/oldboy/1.log
/oldboy/2.log
/oldboy/3.log
/oldboy/oldboy01/a.txt
/oldboy/oldboy01/b.txt

文件属性中时间信息概念: 时间分类(atime访问 mtime修改 ctime修改属性) date
根据时间信息查找文件数据:


image.png

find /oldboy -type f -mtime +7
+7: 7天以前的数据信息
7: 正好距离当前第7天的数据
-7: 7天以内的数据信息

[root@oldboy66 oldboy]# find /oldboy -type f -mtime +2
[root@oldboy66 oldboy]# find /oldboy -type f -mtime +1
/oldboy/1.log
/oldboy/2.log
/oldboy/3.log
/oldboy/oldboy01/a.txt
/oldboy/oldboy01/b.txt
/oldboy/oldboy01/c.txt
/oldboy/oldboy02/a.txt

find命令找东西做处理方法:

配合xargs命令使用

[root@oldboy66 oldboy]# find /oldboy -type f -mtime +1|xargs -n2 rm   -n2---两列
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 2 root root  6 Jul 22 09:06 oldboy01
drwxr-xr-x. 2 root root  6 Jul 22 09:06 oldboy02
drwxr-xr-x. 2 root root  6 Jul 22 09:06 oldboy03
drwxr-xr-x. 3 root root 21 Jul 19 14:31 oldboy1

[root@oldboy66 oldboy]# find /oldboy -type f|xargs ls
/oldboy/oldboy1.txt  /oldboy/oldboy4.txt
/oldboy/oldboy2.txt  /oldboy/oldboy5.txt
/oldboy/oldboy3.txt

配合反引号使用

[root@oldboy66 oldboy]# rm -f `find /oldboy -type f`
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 2 root root  6 Jul 22 09:06 oldboy01
drwxr-xr-x. 2 root root  6 Jul 22 09:06 oldboy02
drwxr-xr-x. 2 root root  6 Jul 22 09:06 oldboy03
[root@oldboy66 oldboy]# touch oldboy{1..5}.txt
[root@oldboy66 oldboy]# ll
total 8
-rw-r--r--. 1 root root 35 Jul 19 11:01 oldboy01.txt
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r--  1 root root  0 Jul 22 09:12 oldboy1.txt
-rw-r--r--  1 root root  0 Jul 22 09:12 oldboy2.txt
-rw-r--r--  1 root root  0 Jul 22 09:12 oldboy3.txt
-rw-r--r--  1 root root  0 Jul 22 09:12 oldboy4.txt
-rw-r--r--  1 root root  0 Jul 22 09:12 oldboy5.txt

配合find 命令参数 -exec使用

root@oldboy66 oldboy]# find ./ -type f -exec rm {} \;
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
[root@oldboy66 oldboy]#
[root@oldboy66 oldboy]# touch oldboy{1..5}.txt
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r--  1 root root  0 Jul 22 09:17 oldboy1.txt
-rw-r--r--  1 root root  0 Jul 22 09:17 oldboy2.txt
-rw-r--r--  1 root root  0 Jul 22 09:17 oldboy3.txt
-rw-r--r--  1 root root  0 Jul 22 09:17 oldboy4.txt
-rw-r--r--  1 root root  0 Jul 22 09:17 oldboy5.txt

配合find 命令参数-delete使用

[root@oldboy66 oldboy]# find ./ -type f -delete
[root@oldboy66 oldboy]# ll
total 0
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1

03文件属性--文件索引

QQ图片20190727160609.png

inode 用于存储文件属性信息/存储文件指针信息,1个文件使用一个inode

创建文件系统(格式化)
查看:df - i
block 用于存储文件数据信息
1个文件最多可以有 多个block 512 字节
创建文件系统(格式化)
查看:df
1个block默认512字节 多个block
block调节小一些: 存储小文件更加有力
存储大文件. 占用多个block, 读一个blcok和写一个block 都会消耗磁盘I/O
企业: 默认block大小 4k

block调节大一些: 存储大文件更加有力
企业: 视频网站. 调整磁盘block更大

04文件属性--硬链接数

硬链接:

概念: inode号码一致的数据互为硬链接
相当于给数据多开个门
创建: ln oldboy.txt oldboy_hard_link.txt
特点:
1.源文件删除,链接文件依然生效
2.硬链接创建成功,不会占用新的inode和block
3.硬链接对目录不能进行处理,不能创建硬链接目录
4.默认目录硬链接数为2,默认文件硬链接数为1
作用:
硬链接文件可以用于数据恢复 防止数据误删除(无法防止文件误修改)
完整备份数据使用cp进行备份
面试题: 在查看一个目录时,硬链接数表示什么意思?
[root@oldboy66 oldboy]# ll -id /etc/
16777281 drwxr-xr-x. 83 root root 8192 Jul 22 12:21 /etc/
解:
01. 硬链接概念: .默认目录硬链接数为2
02. 解释此题硬链接数为什么是83
在/etc目录中有81个子目录

补充: 根据硬链接文件inode号码恢复数据
find / -type f -inum 3213

软链接:

概念:数据信息的快捷方式
创建: ln -s oldboy.txt oldboy/oldboy_soft_link.txt
特点:
01. 源文件删除, 链接文件失效
02. 软链接创建成功, 不会占用新的block, 但会占用新的inode
03. 软链接对目录可以进行处理, 可以创建软链接目录
作用:
01. 方便开发人员调取系统环境数据

[root@oldboy66 oldboy]# ln oldboy.txt  oldboy_hard_link.txt-----创建硬链接
[root@oldboy66 oldboy]# ll
total 8
-rw-r--r--  1 root root  0 Jul 23 19:57 od.log
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r--  2 root root 79 Jul 22 11:23 oldboy_hard_link.txt
-rw-r--r--  2 root root 79 Jul 22 11:23 oldboy.txt

 [root@oldboy66 oldboy]# ln -s oldboy.txt  oldboy_soft_link.txt -----创建软连接 
[root@oldboy66 oldboy]# ll
total 8
-rw-r--r--  1 root root  0 Jul 23 19:57 od.log
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r--  2 root root 79 Jul 22 11:23 oldboy_hard_link.txt
lrwxrwxrwx  1 root root 10 Jul 23 21:43 oldboy_soft_link.txt -> oldboy.txt
-rw-r--r--  2 root root 79 Jul 22 11:23 oldboy.txt
[root@oldboy66 oldboy]# rm -f oldboy.txt 
[root@oldboy66 oldboy]# ll
total 4
-rw-r--r--  1 root root  0 Jul 23 19:57 od.log
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r--  1 root root 79 Jul 22 11:23 oldboy_hard_link.txt
lrwxrwxrwx  1 root root 10 Jul 23 21:43 oldboy_soft_link.txt -> oldboy.txt
[root@oldboy66 oldboy]#
1.png
[root@oldboy66 oldboy]# echo oldgirl63 >oldboy.txt
[root@oldboy66 oldboy]# ll
total 8
-rw-r--r--  1 root root  0 Jul 23 19:57 od.log
drwxr-xr-x. 3 root root 21 Jul 19 10:32 oldboy1
-rw-r--r--  1 root root 79 Jul 22 11:23 oldboy_hard_link.txt
lrwxrwxrwx  1 root root 10 Jul 23 21:43 oldboy_soft_link.txt -> oldboy.txt
-rw-r--r--  1 root root 10 Jul 23 21:48 oldboy.txt
[root@oldboy66 oldboy]# cat oldboy_soft_link.txt
oldgirl63
QQ图片20190727160621.png

05系统正则符号概念:

1)系统基础符号

基础符号:
#: 表示注释信息 ; 表示登录用户信息 root用户登录提示符
$ : 普通用户登录信息提示符; 表示调取变量信息$PATH ;表示调取列信息 awk ‘{print $1}’ /oldboy/oldboy.txt
!:表示强制意思q!;表示取反 ! -path ;用于调取历史命令( ! 历史命令信息开头字母,较危险搜索出来直接执行)
find /oldboy -type f ! -path /oldboy/oldboy01*----排除01目录,不进行查找
|:管道;将前一个命令执行的结果交由后面的命令继续执行
练习:找出/oldboy下面所有.txt结尾的文件,并进行压缩,将压缩文件保存到/oldboy目录中
:调取变量信息示例:

[root@oldboy66 ~]# oldboy=123
[root@oldboy66 ~]# echo $oldboy
123
[root@oldboy66 ~]# cat  /oldboy/oldboy.txt
oldboy01 old boy 01
oldboy02 old boy 02
oldboy03 old boy 03
 [root@oldboy66 ~]# awk '{print $1}' /oldboy/oldboy.txt ---用awk调取第一列
oldboy01
oldboy02
oldboy03
[root@oldboy66 ~]# awk '{print $2}' /oldboy/oldboy.txt ---用awk调取第二列
old
old
old
find /oldboy -type f |xargs :find 与| 结合应用示例:
[root@oldboy66 ~]# find /oldboy -type f -name "oldboy.txt"|xargs sed 's#oldboy#oldgirl#g'
oldgirl01 old boy 01
oldgirl02 old boy 02
oldgirl03 old boy 03
[root@oldboy66 ~]# cat  /oldboy/oldboy.txt |sed 's#oldboy#oldgirl#g'
oldgirl01 old boy 01
oldgirl02 old boy 02
oldgirl03 old boy 03

练习:找出oldboy下面所有.txt结尾的文件,并进行压缩 将压缩文件保存到/oldboy目录中

方法一: 批量压缩

[root@oldboy66 oldboy]# find /oldboy -type f -name "*.txt"|xargs tar zcvf /oldboy/oldboy.tar.gz
tar: Removing leading `/' from member names
/oldboy/oldboy01.txt
/oldboy/oldboy02.txt
/oldboy/oldboy03.txt
/oldboy/oldboy04.txt

方法二:

[root@oldboy66 oldboy]#  tar zcvf /oldboy/oldboy.tar.gz  `find /oldboy -type f -name "*.txt"`
tar: Removing leading `/' from member names
/oldboy/oldboy01.txt
/oldboy/oldboy02.txt
/oldboy/oldboy03.txt

方法三: +把所有东西找完了,统一放括号里

[root@oldboy66 oldboy]# find /oldboy -type f -name "*.txt" -exec tar zcvf /oldboy/oldboy.tar.gz {} +;
tar: Removing leading `/' from member names
/oldboy/oldboy01.txt
/oldboy/oldboy02.txt
/oldboy/oldboy03.txt
/oldboy/oldboy04.txt

方法四: exclude 排除

[root@oldboy66 oldboy]# tar zcvf /oldboy/oldboy.tar.gz --exclude=*.jpg /oldboy/
tar: Removing leading `/' from member names
/oldboy/
/oldboy/oldboy.tar.gz

方法五:

[root@oldboy66 oldboy]# ls /oldboy/*.txt|xargs tar zcvf /oldboy/oldboy.tar.gz
tar: Removing leading `/' from member names
/oldboy/oldboy01.txt
/oldboy/oldboy02.txt

引号符号系列:
‘’:所见即所得
“”:输入即输出,会将部分符号内信息解析处理$ \$()等价于$() 将引号里的命令执行结果交给外面的命令处理
没引号:和双引号功能类似,识别序列信息

[root@oldboy66 oldboy]# echo oldgirl63>oldboy.txt
[root@oldboy66 oldboy]# cat oldboy.txt
oldgirl63
[root@oldboy66 oldboy]# echo oldboy63>>oldboy.txt
[root@oldboy66 oldboy]# cat oldboy.txt
oldgirl63
oldboy63
 [root@oldboy66 oldboy]# grep oldboy oldboy.txt
oldboy63
[root@oldboy66 oldboy]# grep 'oldboy' oldboy.txt
oldboy63
[root@oldboy66 oldboy]# grep "oldboy" oldboy.txt
oldboy63
 [root@oldboy66 oldboy]# echo "oldboy $oldboy `pwd`"
oldboy 123 /oldboy
 [root@oldboy66 oldboy]# echo "oldboy $oldboy $(pwd)"
oldboy 123 /oldboy
[root@oldboy66 oldboy]#

路径符号系列:
~:切换到用户家目录 cd~/cd
-:快速切换到上一次所在路径 cd-/cd$oldboy
.:切换到当前所在路径 cd.
..:切换到上一级所在路径 cd../ cd../../..
[root@oldboy66 oldboy]# pwd
/oldboy
[root@oldboy66 oldboy]# vim ../etc/hosts
10.0.0.201 www.baidu.com
定向符号系列:
1>/>:标准输出重定向
1>>/>>:标准输出追加重定向
2>:错误输出重定向
2>>:错误输出追加重定向

[root@oldboy66 oldboy]# eco oldboy >>/oldboy/ok.log 2>&1
[root@oldboy66 oldboy]# cat ok.log
-bash: eco: command not found
  echo oldboy &>>/oldboy/ok.log

<:标准输入重定向
tr ‘a-z’ ‘A-Z’</oldboy/oldboy.txt
xargs -n2 </oldboy/oldboy.txt
<<:标准输入追加重定向
cat >/oldboy/oldboy.txt<<EOF
逻辑符号系列:
&&: 表示前一个命令执行成功,再执行后面命令
mkdir /oldboy && touch /oldboy/oldboy01.txt
||: 表示前一个命令执行失败,在执行后面命令
rmx /oldboy || touch /oldboy/oldboy02.txt

 输入错误信息时提示信息: 错误输出重定向
        [root@oldboy66 oldboy]# echo oldboy &>/tmp/ok.log && echo ok || echo failed
ok
[root@oldboy66 oldboy]# ech oldboy &>/tmp/ok.log && echo ok || echo failed
failed
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容