文件查找、压缩、归档

一、文件查找

非实时查找数据库查找)locate;实时查找find

locate:从系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db查找,但是依赖于事先构建的索引

索引的构建是在系统较为空闲时自动进行,管理员手动的更新数据库updatedb),得用updatedb命令跟新数据库,才能快速查找,也要根据权限搜索

索引构建过程需要遍历整个根文件系统,极其消耗资源

1.1 locate

locate搜索特点:查找速度快模糊查找;非实时查找;搜索的文件的全路径,不仅仅是文件名

可能只搜索用户具备读取和执行权限的目录

locate KEYWORD

v  -i 执行区分大小写的搜索 ;  -n N 只列举前N 个匹配项目  ;-r:支持正则表达式

v locate foo

• 搜索名称或路径中带有“foo ”的文件

v locate -r ‘\.foo$’

• 使用Regex 来搜索以“.foo ”结尾的文件

1.2 find 查找条件

find实时查找工具,通过遍历指定路径完成文件查找;

v   find 工作特点:查找速度略慢;精确查找;实时查找; 可能只搜索用户具备读取和执行权限的目录

find option 查找路径|查找条件|处理动作   (全盘搜索影响磁盘

查找路径:指定具体目标路径;默认为当前目录;处理动作:对符合条件的文件做操作默认输出至屏幕

查找条件:指定的查找标准,可对文件名、大小、类型、权限标准进行;默认为找出指定路径下的所有文件

1.2.1根据文件inode查找

-name " 文件名称" :支持使用通配符 *, ?, [], [^]  find  /  -name “*.txt   find  /var  –name “*log*”

find -name snow.png   搜索名为snow.png

-iname " 文件名称" :不区分字母大小写 ; -inum n inode 号查找

find -iname snow.png  (不分大小写地搜索名为snow.png Snow.pngSNOW.PNG

-samefile name 相同inode 号的文件 ;     -links n 链接数为n 的文件

-regex "PATTERN" :以PATTERN 匹配整个文件路径字符串,而不仅仅是文件名称

1.2.2根据属主、属组查找 

find  -user  joe  -group  joe(搜索被用户joe  以及组群joe

-user USERNAME :查找属主为指定用户(UID) 的文件  ;-group GRPNAME:  查找属组为指定组(GID) 的文件

-uid UserID :查找属主为指定的UID 号的文件   ;     -gid GroupID :查找属组为指定的GID 号的文件

-nouser :查找没有属主的文件    ;                 -nogroup:查找没有属组的文件

1.2.3 根据文件类型查找 

-type TYPE:    f:  普通文件 ;d:  目录文件; l:  符号链接文件; s :套接字文件

b:  块设备文件; c:  字符设备文件 ; p:  管道文件

find  /home  –type  d  -ls 找到家目录下的目录文件,并列举出来)

1.2.4 组合条件

与:-a  ;  或:-o  ;  非:-not, !

v   (P)  (Q) =  (P Q)    ;    (P) (Q) =  (P Q)

v    !A  -a  !B = !(A  -o  B)               !A  -o  !B = !(A  -a  B)

find  -user  joe  -not  -group  joe       find  -user  joe  -o  -user  jane

find  -not \( -user  joe  -o  -user  jane \)     find  /  -user  joe  -o  -uid  500

1.2.4.1find示例

      找出/tmp 目录下,属主不是root ,且 文件名 不以f 开头的 文件

find  /tmp  \( -not -user root -a -not -name 'f*' \)  –ls     

find  /tmp  -not \( -user root -o -name 'f*' \)  –ls

v   排除目录示例:查找/etc/ 下,除/etc/sane.d 目录的其它所有.conf 后缀的文件

find  /etc  -path  ‘/etc/sane.d’  -a  –prune  -o  -name  “*.conf”  -print

1.2.5根据文件大小来查找

-size  [ +|- ]  #UNIT常用单位:k, M, G

#UNIT (#-1, #]  ;如:6k  表示(5k,6k]      -#UNIT [0,#-1]  ;如:-6k  表示[0,5k]

+#UNIT (#, ) ; 如:+6k  表示(6k ,)

find /var  -size +1M -a -size -10M  | xargs ls -lh

1.2.6根据时间戳

“天”为单位;-atime [+|-]#    #[#,#+1)    +#[#+1, ]    -# [0,#)

-mtime         -ctime

“分钟”为单位:-amin   -mmin    -cmin

1.2.7 根据权限查找

-perm  [/|-]  MODE   mode精确权限匹配

/MODE +MODE任何一类(ugo)对象的权限中只要能一位匹配即可  关系

-MODE:每一类对象都必须同时拥有指定权限  与的关系 没有即为0表示不关注

find  -perm  755  会匹配权限模式恰好是755 文件

只要当任意人有写权限时,find -perm +222 就会匹配;只有当每个人都有写权限时,find -perm -222 才会匹配只有当其它人(other )有写权限时,find -perm -002才会匹配处理动作

-print :默认的处理动作,显示至屏幕;   -ls :类似于对查找到的文件执行ls -l” 命令

v -delete :删除查找到的文件;     -fls file :查找到的所有文件的长格式信息保存至指定文件中

v    -ok COMMAND {} \;  对查找到的每个文件执行由COMMAND 指定的命令;

1.2.7.1 find示例

    对于每个文件执行命令之前,都会交互式要求用户确认

例如find  /tmp -ctime +3 -user  joe  -ok  rm  {}  \(提示删除存在时间超过3天以上的joe 的临时文件)

-exec COMMAND {} \;  对查找到的每个文件执行由COMMAND 指定的命令

v    {} 用于引用查找到的文件名称自身

v   find 传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

例如:v find  -name  “*.conf”  -exec  cp  {}  {}.orig  \  (备份配置文件,添加.orig 这个扩展名)

find  ~  -perm  -002  -exec  chmod o-w  {}  \ (在你的主目录中寻找可被其它用户写入的文件)

find  /data  –type  f  -perm  644  -name “*.sh”  –exec  chmod 755  {}  \

/data查找权限644.sh结尾普通文件改文件为权限755

1.3参数代换

    xargs 用于产生某个命令的参数

xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔成为arguments

v         注意:文件名或者是其他意义的名词内含有空格符的情况

有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决

v  示例:find | xargs COMMAND       find  /sbin  -perm  +7000  |  xargs  ls  -l

二、压缩、解压缩

2.1 compress /uncompress

compress [-dfvcVr] [-b maxbits] [file …]

-d:  解压缩,相当于  -c:  结果输出至标准输出, 不删除原文件  ;-v:  显示详情

v uncompress 解压缩:zcat file.Z >file

2.2 gzip/gunzip

gzip [OPTION]… FILE …

d: 解压缩,相当gunzip  -c:  将压缩或解压缩的结果输出至标准  -#1-9 ,指定压缩比,值越大压缩比越大

v zcat :不显式解压缩的前提下查看文本文件内容                             默认6

v    2.1实例: 

   gzip -c messages >messages.gz

   gzip -c -d messages.gz > messages

zcat messages.gz > messages

2.3 bzip2  

bzip2 [OPTION]… FILE …

-k: keep,  保留原文件  -d :解压缩   ;-# 1-9 ,压缩比,默认为6

v  bzcat :不显式解压缩的前提下查看

2.4 xz  

xz [OPTION]… FILE …

-k: keep,  保留 原文件   ;-d :解压缩   ;-# 1-9 ,压缩比,默认为 为6

v        xzcat:  不显式解压缩的前提下查看

xz互联网上的新软件一般都用此压缩工具 压缩比大,但是压缩的时间也长,解压缩耗时也久一些

2.5 zip

虽然压缩较差,但是能与windows兼容

打包压缩:zip –r sysconfig sysconfig/       解包解压缩:unzip sysconfig.zip

cat  /var/log/messages  |  zip  message  –

unzip  -p  message > message

三、归档工具 

3.1 tar工具 

(现在企业里面常用磁带归档工具 、打包工具

c创建新的档案文件(打包) -t列出打包内容 -x从档案文件中释放文件拆包)

-f:使用的归档名,立即接档名,不加参数  -p:使用原文件的属性 -v:压缩过程可见

-r:追加      -zcvf :打包压缩,但是不会破坏原来的文件,会把目录中的/删除

(1)  创建归档    tar -c -f / PATH/TO/SOMEFILE .tar   FILE… 指定解压目录file

(2)  追加文件至归档:  注:不支持对压缩文件追加    tar -r -f /PATH/TO/SOMEFILE.tar FILE…

(3)  查看归档文件中的文件列表    tar -t -f  /PATH/TO/SOMEFILE .tar

(4)  展开归档(编译时用到)  tar -x -f  /PATH/TO/SOMEFILE .tar   tar -x -f  /PATH/TO/SOMEFILE .tar  -C  /PATH/

(5)  结合压缩工具实现:归档并压缩     -j: bzip2, -z: gzip, -J: xz    

-T 选项指定输入文件;-X 选项指定包含要排除的文件列表

tar  zcvf mybackup.tgz  -T  /root/includefilelist  –X  /root/excludefilelist

3.2 spilt分割打包文件

分割大的 tar 文件为多份小文件:

split –b 1M -d Size tar-file-name prefix-name  split –b 1M –d mybackup.tgz mybackup-parts

     合并:cat mybackup-parts* > mybackup.tgz

3.3 cpio复制到文件

cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。

cpio [ 选项] >  文件名或者设备名

v    cpio [ 选项] <  文件名或者设备名

v  选项:-o  将文件拷贝打包成文件或者将文件输出到设备上

-i  解包,将打包文件解压或将设备上的备份还原到系统

-t  预览,查看文件内容或者输出到设备上的文件内容

-v  显示打包过程中的文件名称。

-d  解包生成目录,在cpio 还原时,自动的建立目录

etc 目录备份:find ./etc -print |cpio -ov >etc.cpio

v  内容预览:cpio –tv < etc.cpio

v  要解包文件:cpio –iv <etc.cpio  cpio –idv < etc.cpio

原创文章,作者:lyx,如若转载,请注明出处:http://www.178linux.com/61086

(0)
lyxlyx
上一篇 2016-11-27
下一篇 2016-11-27

相关推荐

  • nmcli命令使用,解析性能监控工具

    nmcli nmcli地址配置工具,NetworkManager client 网络管理客户端 相关命令:nmcli connection show        查看当前连接状态 nmcli connection reload      重启服务 nmcli connection sho…

    Linux干货 2016-09-07
  • N25-第三周作业

    一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.          [root@test ~]# who | cut -d' ' -f1 | sort -u 二、取出最后登录到当前系统的用户的相关信息。    &nbs…

    Linux干货 2016-12-26
  • sed命令使用

    一、sed简介    sed是一种在线编辑器,一次处理一行内容。处理时,把当前处理的行存储在历史缓冲区,传给“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非使用重定向存储输出。sed主要用来自动编辑一个或…

    Linux干货 2016-08-12
  • LAMP在三台服务器上部署

    准备:centos7.3.3172.16.254.28 CentOS7.3.1 ip172.16.251.109  centos7.3.2 ip172.16.252.81  部署:         centos7.3.1部署mariadb         centos7.3.2 中部署httpd         centos7.3.3 中部署php-fpm …

    2017-06-08
  • 马哥教育网络班22期第2周课程作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。     1、cp 文件复制 [选项]源文件 目标文件         -r 递归复制    …

    Linux干货 2016-08-31
  • bash脚本编程之select语句、函数

    概述     承接上篇,继续介绍一下另一个循环语句select,还有脚本中函数的相关内容,分为三个部分:         1、select语句的介绍和效果演示       &nbs…

    Linux干货 2016-08-21