文件查找和打包压缩

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 ./
只打包目录内的问件,不包括目录本身

  

 

posted @ 2020-12-15 12:03  哎呦不错~~  阅读(170)  评论(0编辑  收藏  举报