day 11特殊字符,find,打包
Day11
作者:翟玉龙
归档:课堂笔记
2019/3/14
快捷键:
Ctrl + 1 标题1
Ctrl + 2 标题2
Ctrl + 3 标题3
Ctrl + 4 实例
Ctrl + 5 程序代码
Ctrl + 6 正文
格式说明:
蓝色字体:注释
黄色背景:重要
绿色背景:注意
老男孩教育教学核心思想6重:重目标、重思路、重方法、重实践、重习惯、重总结
联系方式:
网站运维QQ交流群:
Linux 385168604架构师390642196
Python 29215534大数据421358633
官方网站:
目录
2.2 字符(character)/块(block)设备文件... 1
2.6 Whereis 显示命令,源码及说明文档全路径... 3
3.8.1 把前面的命令的处理结果通过管道送到后面这个命令进行再处理... 8
[if !supportLists]第1章 [endif]课堂思想
[if !supportLists]1.1 [endif]如何提升记忆力
[if !supportLists]2.1 [endif]符号链接文件
[if !supportLists]2.1.1 [endif]链接
以l开3头的是软链接,他相当于一个快捷方式,进入目标程序的一个入口。
删掉软链接对原文件不影响。
Ln -s soft创建软链接
[if !supportLists]2.2 [endif]字符(character)/块(block)设备文件
以C开头的就是字符设备 猫,等串口设备。
以b开头的就是块设备。硬盘,光驱等都属于块设备。
[if !vml]
[endif]
创建字符设备:
[if !vml]
[endif]
创建块设备:
[if !vml]
[endif]
[if !supportLists]2.3[endif] 套接口文件
以s开头.sock文件也是一类特殊的文件,这类文件通常用在网络之间,进行数据连接,如,我们可以启动一个程序来监听客户端
[if !vml]
[endif]
[if !supportLists]2.4 [endif]Which
查命令所在的路径。
[if !vml]
[endif]
[if !supportLists]2.5 [endif]重点 $path
命令行执行命令会从path对应的路径中查找命令,
Path 对应的路径中没有这个命令就会报command。
自定义命令:
[if !vml]
[endif]
[if !supportLists]2.6 [endif]Whereis 显示命令,源码及说明文档全路径
Whereis -b 只显示二进制命令
[if !supportLists]2.7 [endif]Locate
快速定位文件路径
查找文件
[if !vml]
[endif]
查一个安装包下载路径
[if !vml]
[endif]用yum直接安装
[if !supportLists]2.8 [endif]重点Find 查找目录下的文件
查找原理:磁盘遍历,速度慢,
准确查找和模糊查找。模糊查找加*
[root@zyl666 18:26:27 /]# find / -name "小泽玛利亚"
/tmp/小泽玛利亚
[root@zyl666 18:26:38 /]# find / -name "小*"
/tmp/小泽玛利亚
/tmp/小泽玛利亚/小泽玛利亚.txt
[if !supportLists]2.8.1 [endif]按文件类型查找 -type
-type f 查找文本
-type d 查找目录
文件类型详解:
块文件 b block (buffered) special
字符文件 c character (unbuffered) special
目录文件 d directory
p named pipe (FIFO)
文本文件 f regular file
软链接 l symbolic link; this is never true if the -L option or the -followoption is in effect,
unless the symbolic link is broken. If you want to search for symbolic links when-L is
in effect, use -xtype.
[if !supportLists]2.8.2 [endif]-o 取并集
[if !vml]
[endif]
不加参数相当于取交集
如果取并集即或者用-o分割查找的项
-a and
-o or
! 取反
!在哪里就对那里后边的值进行取反
[if !vml]
[endif][root@oldboyedu /data]# touch oldboy{1..10}.txt
[root@oldboyedu /data]# ls
oldboy10.txt oldboy2.txt oldboy4.txt oldboy6.txt oldboy8.txt
oldboy1.txt oldboy3.txt oldboy5.txt oldboy7.txt oldboy9.txt
[root@oldboyedu /data]# find /data -type f
/data/oldboy1.txt
/data/oldboy2.txt
/data/oldboy3.txt
/data/oldboy4.txt
/data/oldboy5.txt
/data/oldboy6.txt
/data/oldboy7.txt
/data/oldboy8.txt
/data/oldboy9.txt
/data/oldboy10.txt
[root@oldboyedu /data]# find /data ! -type f
/data
[root@oldboyedu /data]# mkdir {a..d}
[root@oldboyedu /data]# find /data ! -type f
/data
/data/a
/data/b
/data/c
/data/d
[if !supportLists]2.8.3 [endif]-exec 对查找的结果再处理
[if !vml]
[endif]
\转义,;必须要有的
[if !vml]
[endif]
[if !vml]
[endif]
[if !supportLists]2.8.4 [endif]按修改时间查找 -mtime
-mtime +3 三天以前修改的文件 =3 第三天修改的文件 -3前三天修改的文件
[if !vml]
[endif]
[if !supportLists]2.9[endif] Xargs 分组
-n n代表几个一组
-I 前面找到的内容然后放到{}里面,{}代表前面所得数据
-d 指定分隔符,如果不指定,默认空格
[if !supportLists]第3章 [endif]特殊字符
[if !supportLists]3.1[endif] . 当前目录
[if !supportLists]3.2[endif] .. 上一级目录
[if !supportLists]3.3[endif] - 上一次所在目录
[if !supportLists]3.4[endif] ~ 家目录
[if !supportLists]3.5[endif] \ 转义字符
[if !supportLists]3.6[endif] * 所有字符
[if !supportLists]3.7[endif] ! 取反
[if !supportLists]3.8[endif] | 管道
[if !supportLists]3.8.1 [endif]把前面的命令的处理结果通过管道送到后面这个命令进行再处理
[endif]
(能不用管道就不用管道)
[root@oldboyedu /data]# cat test.txt
a.b.c.d
[root@oldboyedu /data]# echo "Oldboy" >test.txt
[root@oldboyedu /data]# echo "Oldgirl" >>test.txt
[root@oldboyedu /data]# echo "Oldboedu" >>test.txt
[root@oldboyedu /data]# echo "Oldboyedu" >>test.txt
[root@oldboyedu /data]# cat test.txt
Oldboy
Oldgirl
Oldboedu
Oldboyedu
[root@oldboyedu /data]# cat test.txt|grep "boy"
Oldboy
Oldboyedu
[root@oldboyedu /data]# grep "boy" test.txt
Oldboy
Oldboyedu
对比 管道和exec
[root@oldboyedu /data]# find /data -type f -name "oldboy*" -mtime -7 -exec ls -l {} \;
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy1.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy2.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy3.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy4.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy5.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy6.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy7.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy8.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy9.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy10.txt
[root@oldboyedu /data]# find /data -type f -name "oldboy*" -mtime -7|xargs ls -l
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy10.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy1.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy2.txt
-rw-r--r--. 1 root root 0 Mar 14 10:39 /data/oldboy3.txt
本质区别:
find /data -type f -exec rm -f {} \;
相当于
rm -f oldboy1.txt
rm -f oldboy2.txt
rm -f oldboy3.txt
效率低。
find /data -type f|xargs rm -f
只是一条命令
rm -f oldboy1.txt oldboy2.txt oldboy3.txt
[root@oldboyedu /data]# find /data -type f|xargs -i cp {} /opt
[root@oldboyedu /data]# ls /opt/
oldboy1.txt oldboy2.txt oldboy3.txt oldboy4.txt oldboy5.txt
[if !supportLists]3.9 [endif]Date 显示系统时间和日期
[if !vml]
[endif]
[root@oldboyedu /data]# date -s "2020/10/1 00:00:00"
Thu Oct 1 00:00:00 CST 2020
[root@oldboyedu /data]# date
Thu Oct 1 00:00:03 CST 2020
[root@oldboyedu /data]# clock -w
[root@oldboyedu /data]# date +%F
2020-10-01
[root@oldboyedu /data]# date +%Y #year
年
2020
[root@oldboyedu /data]# date +%y #year
年
20
[root@oldboyedu /data]# date +%m #month
月
10
[root@oldboyedu /data]# date +%d #day
日
01
[root@oldboyedu /data]# date +%H #hour
时
00
[root@oldboyedu /data]# date +%M#minute
分
02
[root@oldboyedu /data]# date +%S #second
秒
46
[root@oldboyedu /data]# date +%Y-%m-%d
2020-10-01
[root@oldboyedu /data]# date +%F
2020-10-01
[root@oldboyedu /data]# date +%H:%M:%S
00:04:29
[root@oldboyedu /data]# date
Thu Oct 1 00:04:38 CST 2020
[root@oldboyedu /data]# date +%F -d "-1day"
2020-09-30
[root@oldboyedu /data]# date +%F -d "+1day"
2020-10-02
[root@oldboyedu /data]# date +%F -d "+1month"
2020-11-01
[root@oldboyedu /data]# date +%F -d "+1Y"
date: invalid date ‘+1Y’
[root@oldboyedu /data]# date +%F -d "+1year"
2021-10-01
-
过去
+
未来
[root@oldboyedu /data]# date +"%Y-%m-%d %H:%M:%S"
2020-10-01 00:09:36
[root@oldboyedu /data]# date +"%F %T"
2020-10-01 00:09:39
[if !supportLists]3.10[endif] Tar 打包压缩
文件压缩,大小会降低
Tar
打包
语法tar
参数: 框 苹果
-z 压缩
-c 创建
-v 输出打包过程
-f 文件的打包
-h 跟随软链接
-t 不解压查看内容
-x 解压
Data.tar.gz tar标识打包,gz是gzip的标识
Tar -zcvf data,.tar.gz ./data
Tar -tf 加打包名,查看打包内容
指定目录解压
Zcvf打包
[root@zyl666 20:25:17 /]# tar zcvf/opt/date.tar.gz ./date *****打包,zcf极简打包
./date/
./date/1.txt
./date/2.txt
./date/3.txt
./date/4.txt
./date/5.txt
[root@zyl666 20:26:14 /]# tar -tf/opt/date.tar.gz *******不解压查看打包内容
./date/
./date/1.txt
./date/2.txt
./date/3.txt
./date/4.txt
./date/5.txt
Zxvf解压 极简解压xf
[root@zyl666 20:35:07 /opt]# tar xfdate.tar.gz -C /tmp/ ***极简解压,也可以用zxvf
[root@zyl666 20:36:07 /opt]# ls /tmp/
1.txt vmware-root vmware-root_6509-1681265529 vmware-root_6751-3887503186
2.txt vmware-root_23985-4155303761 vmware-root_6521-1723667692 vmware-root_6753-3887503219
3.txt vmware-root_6072-701138450 vmware-root_6656-3091807477 vmware-root_6759-3887372148
4.txt vmware-root_6112-968930924 vmware-root_6699-4113932447 vmware-root_6765-3845624056
a vmware-root_6167-1949639613 vmware-root_6729-3854340421 vmware-root_6766-2856389284
b vmware-root_6375-1983194421 vmware-root_6735-3854471490 小泽玛利亚
c vmware-root_6468-701206161 vmware-root_6741-3845492958
d vmware-root_6471-1723667661 vmware-root_6743-3853816156
date vmware-root_6506-734234784 vmware-root_6747-3879048919
zchf 带软链接的打包···
[if !vml]
[endif]