7.find与tar的基本使用
1 | du # 查看文件或目录大小 |
find
find + 文件路径(默认 .) + [-选项 参数]
按照文件类型查找
文件类型:
f :普通文件 -
d:目录
l :软连接
c:字节设备
b:块设备
1 | find . -type f |
1 | find /dev -type c |
1 | find . -type d |
按照文件名称查找
1 | find . -name "*.txt" |
按照文件名称查找不区分大小写
1 | find . -iname "*.txt" |
按照文件的inode号查找
1 | find . -inum 67144904 |
按照大小查找文件
单位类型(不写默认M)
- c
- k
- M
- G
范围:
10M:等于10M
-10M:小于10M
+10M:大于10
逻辑:
- -and:同时成立(默认是-and)
- -or:或者
1 | find ./ -size 10M -or -size +15M # 查找10M或者大于15M的文件 |
按照指定深度查找文件
1 | find ./ -maxdepth 1 -tyep f |
按照时间查找
1 | find ./ -mtime +7 # 7天前被修改过的文件 |
1 | find ./ -mmin 120 # 前第120分钟内修改 |
按照文件所有者或组查找
- -user:指定拥有的文件
- -group:指定拥有组的文件
- -uid:指定UID的文件
- -gid:指定GID的文件
1 | find . -uid 1000 |
按文件特定权限
- 准确权限
- -:至少拥有的权限(-324),三个&操作
- /:至少满足其中之一的权限(/442),三个|
1 | find /home -perm -664 -ls # 查找至少有664权限的文件或目录并进行ls显示详细信息 |
将find结果处理
|方式:
删除
1 | find ./data -mtime +7 |xargs rm |
查看
1 | find . -name "*.txt" |xargs ls -l |
复制
1 | find ./ -name "*.txt" |xargs -i cp {} /opt/ |
移动
1 | find ./ -type f|xargs -i mv {} /opt/ |
-exec方式:
复制
1 | find . -name "*.txt" -exec cp -a {} /opt \; # 默认;是命令分割符,所以要\区分 |
删除
1 | find . -name "*.txt“ -exec rm {} \; |
$()或者``方式:
1 | rm -r $(find . -name "*.txt") |
1 | rm -r `$(find . -name "*.txt")` |
压缩
为什么要压缩?
- 节省空间
- 备份,传到备份服务器
- 节省网络流程
- 减少磁盘IO
什么时间压缩?占用CPU非常高,业务的低谷期压缩,避免影响。
- 游戏:5-7点
- 电商:5点
- 外卖:4-5点
- 小说:4-5点
- 企业:流量监控
zip
压缩
1 | zip tt.zip test1.txt test2.txt test3.txt # 将test{1..3}.txt压缩为tt.zip |
解压
1 | unzip tt.zip |
1 | unzip tt.zip -d /tmp # 指定解压到tmp目录 |
tar
- c:create创建一个新档
- x:extract从现有归档提取
- t:list列出归档内容
- f:file执行创建或者提前的文档
- v:verbose过程显示
注意:为保护系统问题默认tar会移除文件路径/,变为当前路径,避免解压覆盖了
创建归档
1 | tar -cvf test.tar {1..5}.txt |
查看归档
1 | tar -tf test.tar |
解压归档
1 | tar -xvf test.tar |
排查除要tar的文件
1 | tar cvf test.tar *.txt --exclude={1..2}.txt # 排除1.txt和2.txt这两个文件 |
- z:gzip压缩
- j:bzip2压缩
- J:xz压缩
gzip:
压缩
1 | tar czvf test.tar.gz *.txt # 创建归档并gzip压缩 |
1 | gzip test.tar.gz test.tar # 归档gzip压缩 |
查看
1 | tar tzf test.tar.gz # 查看gzip压缩的归档内的文件 |
解压
1 | tar xzvf test.tar.gz # 解压gzip压缩的归档 |
1 | gunzip test.tar.gz # 解压gzip,不会解压tar归档 |
bzip2:
压缩
1 | tar cjvf test.tar.bz2 *.txt # 创建归档并bzip2压缩 |
1 | bzip2 test.tar.bz2 test.tar # 归档bzip2压缩 |
查看
1 | tar tjf test.tar.bz2 # 查看bzip2压缩的归档内的文件 |
解压
1 | tar xjvf test.tar.bz2 # 解压bzip2压缩的归档 |
1 | bunzip2 test.tar.bz2 # 解压gzip,不会解压tar归档 |
xz
压缩
1 | tar cJvf test.tar.xz *.txt # 创建归档并gzip压缩 |
1 | xz test.tar.xz test.tar # 归档gzip压缩 |
查看
1 | tar tJf test.tar.xz # 查看gzip压缩的归档内的文件 |
解压
1 | tar xJvf test.tar.xz # 解压gzip压缩的归档 |
1 | unxz test.tar.xz # 解压gzip,不会解压tar归档 |
链接
软链接
1 | ln -s test.txt lnstest # 创建test.txt的符号(symbolic)链接,名字为lnstest,独立inode,存放链接的名称,字符大小是text.txt字符长度 |
作用:
- 保存文件路径不变,解决硬盘不够用问题
- 代码上线
- 去版本号
硬链接
目录不可以做硬链接
1 | ln test.txt lntest # 创建硬链接,同inode |
目录默认两个硬链接:一个自己
.,一个上一级到这里的路径文件默认一个硬链接
查看文件详细信息
1 | stat test.txt # 查看文件详细信息 |
access:最近查看文件的时间
change:修改权限的时间
modify:修改内容时间





