; 初学Linux之文件查找和压缩 | Linux运维部落

初学Linux之文件查找和压缩

使用locate命令 ,使用find命令 ,压缩和解压缩工具

文件查找和压缩

之前,我们已经了解了系统的中有关文件创建,文件和目录的复制,目录创建,目录删除等相关的命令,但是很多时候,这些操作,都是需要指定文件的绝对路径的(相对于根目录的路径),如果我们只知道文件或者目录本身的名称,但是不知道,文件以及目录的上级目录的名称时,或者,我们需要查找一个历史文件所在的位置,这个情况下,我们可以使用文件查找相关的命令搜寻到我们需要的信息,并直接显示在屏幕上,以便我们进行获取使用。

文件查找工具有两个:locate 和 find 。文件查找命令分为非实时查找和实时查找,非实时查找是根据索引查找的,索引不是自动生成的,是需要提前建立的,若是很长时间没有建立索引目录,那么文件查找过程就不会准确。实时查找是从磁盘的指定目录,遍历目录下的所有文件进行文字匹配,将匹配的项进行反馈的查找方式。

使用locate命令

locate 命令属于非实时查找,需要对整个文件系统中的文件预先构建索引。系统中有周期性的任务,及时且自动的创建索引,若是,需要当前重新建立索引,可以使用 updatedb 命令构建索引,这个过程是遍历根目录下的所有的文件的,一般会比较占用系统的资源,耗费比较多的时间,建议在系统比较空闲的时间进行操作,同时,系统中周期性任务就是在空闲时段更新索引的。

locate 工具的特点包括:查找文件速度快;精度有所欠缺;同时是模糊形式的查找;搜索的是文件的全路径,不仅仅是文件名,下面是locate 命令的具体用法。

捕获

使用find命令

find 命令查找工具是实时精确的搜索,会对指定的目录中,所有的文件进行匹配。所以它的特点是:查找速度慢,但是有较高的准确率。

find 和locate 这两个命令在特性中是相互补充的,都是非常的实用,但是,对应命令的使用者来说,一些没有权限访问的目录,find 和 locate 可能是逃过查找的 ,这一点在使用中需要注意。

find 命令的使用语法:

find [选项] [查找路径] [查找条件] [处理动作]

查找路径:指定具体目标路径;若是没有指定,默认是对当前目录下可访问文件进行查询

查找条件:指定的查找要求,比如文件名要求,大小要求,文件类型要求,权限要求,时间属性要求。这个缺省的情况下,是指没有要求,默认是显示所有的文件。

处理动作:当查找出符合要求的文件后,可以同时指定对文件进行某些操作,缺省的情况下,是将搜索的结果标准输出到屏幕。

查找路径直接写目录的绝对路径即可,比较复杂的是查找条件,处理动作相对复杂,这里分别进行说明。

一、查找条件(单横线连接)

1、指定搜索层级(目录最后面不要加斜线)

-maxdepth n 这个是指最大搜索目录深度,指定目录为第1级,也可以理解为查找到第n层

-mindepth n 最小搜索目录深度,可以理解为,从第n层开始进行查找

2、指定文件名称和inode 进行查找

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

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

-inum n 按inode号查找

-samefile name 相同inode号的文件

-links n 链接数为n的文件

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

3、根据属主、属组查找:

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

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

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

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

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

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

4、根据文件类型查找:

-type TYPE:

  • f: 普通文件
  • d: 目录文件
  • l: 符号链接文件
  • s:套接字文件
  • b: 块设备文件
  • c: 字符设备文件
  • p: 管道文件

5、根据文件大小来查找:

-size [+|-]#UNIT

  • 常用单位:k, M, G,c(byte)
  • #UNIT: (#-1, #] 如: -size 6k 表示(5k,6k] 理解为“接近 6k ”大小的 ,
  • -#UNIT:[0,#-1] 如:-size -6k 表示 [0,5k] 大小小于“接近 6k” 范围的
  • +#UNIT:(#,∞) 如: -size +6k 表示(6k,∞) 大小大于“ 接近 6k ”范围的
  • 注意:根据文件大小查找,不应该是查找确定的数字,因为不同的单位(unit)之间是更小单位的范围的,所以指定数字本身有范围确认的功能。

捕获

6、根据时间戳:

以“天”为单位; atime是代表(Access time)

-atime [+|-]#,

  • #: [#,#+1) 如 :-atime 1 理解为昨天之前第1天(24小时)。不包括昨天
  • +#: [#+1,∞] 如:-atime +1 昨天之前第1天,之前的所有时间
  • -#: [0,#) 如: -atime -1 当前时间到昨天之前第1天,

-mtime 表示(Modify time) -ctime 表示(Change time)

注意:在时间上进行判断时,是向前进行推算的。

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

捕获

7、根据权限查找:

-perm [/|-]MODE

MODE 是权限的数字表示法

  • MODE: 精确权限匹配
  • /MODE:任何一类(u,g,o)对象的权限中只要能一位匹配 即可,或关系,+ 从centos7开始淘汰
  • -MODE:每一类对象都必须同时拥有指定权限,与关系

有三个数字,分别对应 user ,group ,other 的权限,数字0表示,权限不关心

7、多条件的组合使用

组合条件:
与:-a
或:-o
非:-not, !
德·摩根定律:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
示例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

find -not \( -user joe -o -user jane \)

find /etc/httpd ! \( -regex .*conf\.. -o -not -name conf \)

find /etc/httpd -not \( -regex .*conf\.. -o ! -name conf \)

查找/etc/下,除/etc/sane.d和/etc/fonts两个目录的其它所有.conf后缀的文件
find /etc \(–path ‘/etc/sane.d’ –o –path ‘/etc/fonts’ \) -a -prune –o -name “*.conf”

目录进行剪切操作是,顺序进行的(先扫描文件夹),剪切了就不会进入了,所以剪切掉的文件夹中什么都不会出现。

多个条件使用的情况下,默认是且的关系

二、处理动作

-print:默认的处理动作,显示至屏幕(缺省默认)

-ls:类似于对查找到的文件执行“ls -l”命令

-delete:删除查找到的文件

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

-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND 指定的命令,对于每个文件执行命令之前,都会交互式要求用 户确认

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

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

find传递查找到的文件至后面指定的命令时,查找到所有符合 条件的文件一次性传递给后面的命令 ,xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数 据,并且以空格符或回车符将 stdin 的数据分隔成为 arguments

注意:文件名或者是其他意义的名词内含有空格符的情况 v有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决。

示例:
ls f* |xargs rm
find /sbin -perm +7000 | xargs ls –l
find和xargs格式:find | xargs COMMAND

xargs是将标准输出作为管道后面命令的参数的,和标准输入不同。

压缩和解压缩工具

1、cpio

功能:复制文件从或到归档

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

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

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

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

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

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

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

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

-c 一种较新的存储方式

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

内容预览 cpio –tv < etc.cpio

解包文件 cpio –idv < etc.cpio

2、tar 不会删除原文件

打包工具,可以是多个文件或者目录,结合选项可以压缩和解压缩

-c 创建

-f 指定存储文件 一般都有

-t 查看

-r 追加

-x 展开 -C 展开后的文件存放到指定的目录(必须先存在)

压缩工具 -j:bzip2 ;-z:gzip;-J:xz;

-T:指定输入文件的表格(批量设置)

-X:排除指定文件列表中的文件(批量设置)

split 分割大的tar文件 -b 指定大小 -d数字结尾,不加是字母

split -b 1M -d 源文件 指定的小文件前缀

合并 cat 指定的小文件前缀* > 源文件名

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:/91068

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

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

友情链接:万达招商QQ  万达娱乐直属  万达娱乐开户  万达注册  测试  万达娱乐注册  万达娱乐招商  万达娱乐主管  万达娱乐  guoqibee.com