文件查找和打包压缩
1.find
find是实时查找工具,通过指定路径完成文件查找
工作特点:
查找速度略慢
精准查找
实时查找
查找条件丰富
可能只搜索用户具备读取和执行权限的目录
find [option] . . . [查找路径] [查找条件] [处理动作]
查找路径:指定具体目标路径;默认为当前目录
查找条件:指定的查找标准,可以文件名,大小,类型,权限等标准进行;默认为找出指定路路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕
指定搜素目录层级
-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
-mindepth level 最小搜素目录深度
[09:50:37 root@aiyoubucuo ~]find /etc/dbus-1/ -maxdepth 2 /etc/dbus-1/ /etc/dbus-1/session.d /etc/dbus-1/system.d /etc/dbus-1/system.d/org.freedesktop.Accounts.conf /etc/dbus-1/system.d/com.ubuntu.LanguageSelector.conf 最大到二级目录,包含一级目录
[09:52:21 root@aiyoubucuo ~]find /etc/dbus-1/ -mindepth 2
/etc/dbus-1/system.d/org.freedesktop.Accounts.conf
/etc/dbus-1/system.d/com.ubuntu.LanguageSelector.conf
只到第二目录
对每个目录先处理目录内的文件,再处理目录本身
-depth
[09:54:11 root@aiyoubucuo ~]find /etc/dbus-1/ -depth /etc/dbus-1/session.d /etc/dbus-1/system.d/org.freedesktop.Accounts.conf /etc/dbus-1/system.d/com.ubuntu.LanguageSelector.conf /etc/dbus-1/system.d /etc/dbus-1/
使用depth后目录跑到了最后
[10:01:41 root@aiyoubucuo ~]find /etc/dbus-1/ /etc/dbus-1/ /etc/dbus-1/session.d /etc/dbus-1/system.d /etc/dbus-1/system.d/org.freedesktop.Accounts.conf /etc/dbus-1/system.d/com.ubuntu.LanguageSelector.conf
根据文件名和inode查找
-name “文件名称” 支持使用通配符
-iname “文件名称” 不区分字母大小写
-inum n 按inode号查找
-samefile name 相容inode号的文件
-regex “pattern” 以字符串匹配整个文件路径,而非文件名称
[10:26:05 root@aiyoubucuo ~]find -name jiaoben ./jiaoben
[10:37:24 root@aiyoubucuo ~]find -regex ".*\.sh"
./jiaoben/ip.sh
./jiaoben/body.sh
./jiaoben/arg.sh
./jiaoben/case.sh
./jiaoben/i.sh
./jiaoben/9x9.sh
./jiaoben/chicken.sh
./1+100.sh
根据属主,属组查找
-user username 查找属主为指定用户uid的文件
-group grpname 查找属组为指定组的文件
-uid userID 查找属主为指定uid号的文件
-gid 查找属组为指定GID号的文件
根据文件类型查找
-type
type可以是以下形式
f:普通文件
d:目录文件
l:符号链接文件
s:套接字文件
b:块设备文件
c:字符设备文件
p:管道文件
[10:58:35 root@aiyoubucuo ~]find /etc -type f
查看/etc 的普通文件
组合条件
与:-a
或:-o
非:-not !
根据文件大小来查找
-size 常用单位:k,M,G
根据时间戳
以天 为单位
-atime
-mtime
-ctime
根据权限查找
-perm
/ 任何一类(u,g,o)对象的权限中只要能以为匹配即可,或关系
- 每一类对象都必须同时拥有指定权限,与关系
说明
find -perm 755 会匹配权限模式恰好是755的文件
只要当任意人有写权限时,find -perm /222就会匹配
只有当每个人都有写权限时, find -perm -222才会匹配
处理动作
-ls 对查找文件执行 格式命令输出
-OK command {} \; 对查找到的每个文件执行有command指定的命令,对于每个问价执行命令之前,都会交互式要求用户确认
-exec command {} \; 对查找到的每个文件执行有command指定的命令{}:用于引用查找到的文件名称自身
[11:22:48 root@aiyoubucuo ~]touch ybw [11:22:55 root@aiyoubucuo ~]find -name "*w" ./ybw [11:23:10 root@aiyoubucuo ~]find -name "*w" -exec rm -rf {} \; [11:23:51 root@aiyoubucuo ~]ls 1+100.sh jiaoben
find .|xargs grep "PS"查找当前目录下字符串
2.参数替换xargs
由于很多命令不支持管道来传递参数,xargs用于产生摸个命令的参数,xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔成为参数
另外,许多命令名列不能接受过多参数,命令执行可能会失败,xargs可以解决
find经常和xargs命令进行组合,形式如下
find | xargs command
[11:30:13 root@aiyoubucuo data]touch {1..5}.txt [11:30:40 root@aiyoubucuo data]ls 1.txt 2.txt 3.txt 4.txt 5.txt [11:30:43 root@aiyoubucuo data]ls | xargs rm [11:30:59 root@aiyoubucuo data]ls
[root@openvpn-server /]#find /root/ -name "ni"|xargs -i cp {} /data/
3.压缩和解压缩
gzip来自于gzip包
对应的文件是.gz后缀
格式
gzip [option] ... file ...
-k keep,保留源文件
-d 解压缩,相当于gunzip
-c 结果输出至标准输出,保留源文件不改变
-# 指定压缩比#取值1-9,值越大压缩比越大0
bzip2
对应的文件是.bz2后缀
bzip2 [option] ... file ...
-k keep,保留源文件
-d 解压缩,相当于bunzip2
-c 结果输出至标准输出,保留源文件不改变
-# 指定压缩比#默认为9
xz
对应的文件是.xz后缀
zx [option] ... file ...
-k keep,保留源文件
-d 解压缩,相当于unxz
-c 结果输出至标准输出,保留源文件不改变
-# 指定压缩比#默认为9
4.打包和解包tar
tar即磁带归档,可以对目录和多个文件打包一个文件,并且可以压缩,保留文件属性不丢失,常用于备份功能,推荐使用
对应的文件是.tar后缀
几个常用选项
-c 建立新的备份文件
-v 显示指令执行过程
-f 指定备份文件
-x 从备份文件中还原文件
-t 列出备份文件的内容
-z 相当于gzip压缩工具
-j 相当于bzip2
-J 相当于xz压缩工具
# touch a.c # tar -czvf test.tar.gz a.c //压缩 a.c文件为test.tar.gz a.c
压缩文件非打包
# tar -xzvf test.tar.gz a.c
解压文件
#cd /etc
#tar xvf /root/etc/.tar.gz ./
只打包目录内的问件,不包括目录本身