find命令
find命令用于在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名,如果不加任何参数命令
则在当前目录及其子目录查找并显示
语法
find [目录名称] [参数]
参数
-name 按照文件名字查找
* * 通配符
-iname 按照文件名字查找(忽略大小写)
-size 按照文件大小查找
+ 大于
- 小于
-mtime 按照修改时间查询
+ n天之前(可以省略)
- n天之内
-atime 按照访问时间查询
-ctime 按照状态修改时间查询
-user 按照用户属主查询
-group 按用户属组查询
-type 按照文件类型查询
d 文件夹
l 链接文件
s 套接字文件
p 管道文件
c 字符文件
b 磁盘文件
f 普通文件
-perm 按照文件权限查询
-inum 按照index node号码查询
-a 并且关系
-o 或者关系
-maxdepth 查询目录深度
补充:
-exec 将find命令处理好的结果交给其它命令继续处理
案例
案例1: 查询/etc目录下的hosts文件
[root@localhost ~]# find /etc/hosts -name 'hosts'
/etc/hosts
案例2:查询etc目录下名称中包含hosts的文件
[root@localhost ~]# find /etc/hosts -name 'hosts'
/etc/hosts
案例3:要求把/etc目录下,所有普通文件打包到/tmp目录
[root@localhost ~]# tar -czPf /tmp/etc1.tra.gz ` find /etc/ -type f | xargs`
[root@localhost ~]# cd /tmp
[root@localhost tmp]# ls
crontab.67057h crontab.XbZpBG etc1.tra.gz vmware-root_19494-2732153680 vmware-root_19521-4247056593
[root@localhost tmp]# ll
total 11152
-rw-------. 1 root root 13 Dec 20 14:34 crontab.67057h
-rw-------. 1 root root 10 Dec 20 14:36 crontab.XbZpBG
-rw-r--r--. 1 root root 11411390 Dec 20 21:28 etc1.tra.gz
drwx------. 2 root root 6 Dec 19 18:37 vmware-root_19494-2732153680
drwx------. 2 root root 6 Dec 19 18:37 vmware-root_19521-4247056593
解析
tar -czPf /tmp/etc1.tra.gz 打包之后的路径及名称
` find /etc/ -type f | xargs` | : 前面一个命令的结果交给后面一个命令处理
xargs : 把处理的文本变成以空格分割的一行
``(反引号) : 提前执行命令,然后将结果交给其他命令来处理
dd生成文件命令
命令可以实现指定创建文件的大小
dd if=/dev/zero of=test bs=10M count = 100
会生成一个100M的文件
if 从什么地方读
of 写入的路径
bs 每次写入多少内容
count 写入多少次
正则表达式
正则表达式的分类
普通正则表达式
拓展正则表达式
普通正则表达式
字符 | 描述 |
---|---|
^ | 以某字符开头 |
$ | 以某字符结尾 |
. | 匹配一个字符 |
* | 匹配0个或多个字符 |
[] | 匹配在集合中的 |
[^] | 匹配不在集合中的 |
a-z | 匹配小写字母 |
A-Z | 匹配大写字母 |
a-zA-Z | 匹配字母 |
0-9 | 匹配数字 |
\ | 转义 |
拓展正则表达式
字符 | 描述 |
---|---|
{} | 匹配的次数 |
{n} | 匹配n次 |
{n,} | 匹配至少n次 |
{n,m} | 匹配n到m次 |
{,m} | 最多匹配m次 |
+ | 重复前一个字符一个或一个以上 |
? | 匹配0个或一个字符 |
| | 表示或,查找多个字符串 |
() | 分组过滤匹配 |
\n | 代表第n个分组 |