文件查找和压缩

本节讲解文件查找locate和find命令;还有各种压缩工具

文件查找

  1. locate 文件名:(非实时查找如:数据库查找)

查询系统上预建的文件索引数据库: /var/lib/mlocate/mlocate.db

依赖于事先构建的索引(索引的构建是在系统较为空闲时自动进行(周期性服务),管理员手动更新数据库(updatedb))

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

工作特点:

查找速度快、模糊查找、非实时查找、搜索的文件是全路径,不仅仅是文件名、可能只搜索用户具备读取和执行权限的目录

locate  KEYWORD

-i     不区分大小写

-n    只列举前n个匹配项目

-r     使用正则表达式

locate -r “^/etc/.*\.conf$”       //搜索以.conf结尾的文件

  1. find :(实时查找)通过遍历指定路径完成文件查找

工作特点:

查找速度慢、精确查找、实时查找、可能只搜索用户具备读取和执行权限的目录

find  语法:find   [OPTION] …  [查找路径]  [查找条件]   [处理动作]

查找路径:指定具体目标路径;默认为当前目录

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

处理动作:对符合条件的文件做操作,默认输出至屏幕

查找条件

 1.搜索层级别:  -maxdepth //最大搜索目录深度        -mindepth //最小搜索目录深度

         Find    /data  -maxdepth   3      -mindeoth   3    -name    f1   //查找三层的文件

  1. 根据文件名和inode查找:

– name “文件名称”:支持使用glob *, ?, [], [^]

-iname “文件名称”:不区分字母大小写

-inum n 按inode号查找

-samefile name 相同inode号的文件

-links n 链接数为n的文件

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

3.根据属主或属组查找:

-user USERNAME:查找属主为指定用户(UID)的文件

find  /home  -user   wang    -ls     //查找wang的文件,并以长格式的形式显示

-group GRPNAME: 查找属组为指定组(GID)的文件

-uid UserID:查找属主为指定的UID号的文件

-gid GroupID:查找属组为指定的GID号的文件

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

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

  1. 根据文件类型:

-type TYPE:

f: 普通文件

d: 目录文件

l: 符号链接文件

s:套接字文件

b: 块设备文件

c: 字符设备文件

p: 管道文件

  1. 空文件或目录:

 -empty                      例如: find /app  –type  d  –empty   //搜索空目录文件

  1. 德·摩根定律:(非 A) 或 (非 B) = 非(A 且 B) (非 A) 且 (非 B) = 非(A 或 B)

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

-o    或

-a    与

  1. 排除目录: -prune

查找/etc/下,除/etc/sane.d和/etc/fonts两个目录的所有.conf后缀的文件

find /etc \(–path ‘/etc/sane.d’ –o –path ’/etc/fonts’ \) -a -prune –o -name “*.conf”

8.根据文件大小来查找

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

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

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

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

10

  1. 根据时间戳:

以“天”为单位;

-atime [+|-]#,

#: [#,#+1)

+#: [#+1,∞]

-#: [0,#)

-mtime

-ctime

11

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

  1. 根据权限查找:

-perm [/|-]MODE

MODE: 精确权限匹配

/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰

-MODE:每一类对象都必须同时拥有指定权限,与关系

0 表示不关注

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

只要当任意人有写权限时,find -perm +222就会匹配

只有当每个人都有写权限时,find -perm -222才会匹配

只有当其它人(other)有写权限时,find -perm -002才会匹配

处理动作

  1. –print 默认的处理动作,显示至屏幕
  2. –ls 将搜索到的结果以长格式的形式显示出来
  3. –delete 删除搜索出来的文件(不提示,危险)
  4. –fls 实现将搜索结果以长格式的形式保存到文件中
  5. -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于 每个文件执行命令之前,都会交互式要求用户确认
  6. -exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,buxunwen直接执行
  7. {} //用于引用查找到的文件名称自身

参数替换xargs

  xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数据,并且以空格符 或回车符将 stdin 的数据分隔成为arguments

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

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

find和xargs格式:find | xargs COMMAND

echo   f{1..4562000} |xargs -n100  touch //每次创建100个文件,实现批量创建文件

压缩解压缩工具

1.compress  /  uncompress(压缩文件)

-d    解压缩     相当于uncompress

-c    压缩后结果显示在屏幕,并保留源文件(可用重定向保存压缩后内容)

-v    显示详情

  1. gzip /gunzip(压缩文件)

-c    降压缩或解压缩的结果输出到屏幕

-d    解压缩       相当于gunzip

-数字     指定压缩比

zcat    不显示解压缩的前提下查看文本文件内容

3.bzip2   /bunzip2(压缩文件)

-k    保留源文件

-d    解压缩       相当于bunzip2

-数字     指定压缩比

bzcat    不显示解压缩的前提下查看文本文件内容

4.xz /unxz  /xzcat(压缩文件)

-k: keep, 保留原文件

-d:解压缩

-#:1-9,压缩比,默认为6

xzcat    不显示解压缩的前提下查看文本文件内容

5.zip  /  unzip

打包压缩:zip –r /testdir/sysconfig     /etc/sysconfig/

解包解压缩 unzip sysconfig.zip

cat /var/log/messages | zip messages – (-代表前面打开的文件)

unzip -p message > messag

  1. tar   工具(- 可有可无)

-c      创建一个打包文件                  -v      显示过程

-p      保留原属性                           -f       指定文件名

-t       预览                                     -C      指定到某目录

(1)创建归档      tar     -cvpf

解压缩           tar     -xvf       //可解开任意格式的压缩文件

打包并压缩      tar   -zcvpf       文件名.tar.gz

(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选项指定包含要排除的文件列表

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

split –b   Size   –d   tar-file-name   prefix-name(文件前缀)  【-d  指文件名加数字】

(7)   合并

cat  mybackup-parts*   > mybackup.tar.gz

cpio  工具

cpio [选项] > 文件名或者设备名      //用于备份

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

选项 :

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

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

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

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

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

-c 一种较新的存储方式

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95748

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code