初学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运维部落立场,如若转载,请注明出处:http://www.178linux.com/91068

(1)
上一篇 2018-01-12 22:19
下一篇 2018-01-13 15:48

相关推荐

  • 马哥教育网络班20期+第5周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep '^[[:space:]]\+' /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至…

    系统运维 2016-07-12
  • N25期–第十六周作业

    1源码编译安装LNMP架构环境; 2、编写一个脚本完成以下功能: (1)、一键搭建LNMP源码编译环境; (2)、可通过在脚本后面跟上一些参数来自定义安装目录等其他选项。” 1、源码编译安装LNMP架构环境; 安装编译工具和库文件 1 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libp…

    Linux干货 2017-05-08
  • Linux入门知识之计算机基础

    计算机基础、linux发行版、命令帮助获取

    2018-01-11
  • 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@wlm ~]# useradd tuser1 [root@wlm ~]# cp -r etc/skel/ /home/tuser1/…

    Linux干货 2016-11-21
  • week6

    1、请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白 字符开头的行的行首加#; :%s@^[[:space:]]\+[^[:space:]]@#&@g 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/…

    Linux干货 2016-12-02