初学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)
hack王和juhack王和ju
上一篇 2018-01-12
下一篇 2018-01-13

相关推荐

  • 文本处理三兄弟(grep,sed,awk)

    linux文本处理三剑客: grep:文本过滤工具 grep  egrep=grep -e  fgrep sed:流编辑器  处理多个行  awk:文本编辑工具,格式化工具 grep [OPTIONS] PATTERN [FILE…] : 文本处理搜索工具,根据用户指定的“模式”对目标文本进行匹配检查;打印匹…

    Linux干货 2017-04-01
  • python第二周

    #python数据结构(list) ## 分类 数值型:int、float、complex、bool 序列对象:字符串 str   列表  list   元组  tuple 键值对: 集合 set   字典 dict   ## 数字的处理函数 math.e  math.pi: 自如常数和π round():  四舍六入五去偶 floor():  取…

    Linux干货 2017-09-23
  • 计算机组成与Linux基础

    一 计算机组成 冯诺依曼体系 计算机处理数据和指令一律用二进制表示 指令和数据不加混合存储在同一存储器中 顺序执行程序每一条指令 计算机硬件由运算器、控制器、存储器、输入设备以及输出设备组成 计算机组成部分 CPU:含有指令集,对程序进行运算和判断并分为两个主要单元分别为算术逻辑单元和控制单元。其中算术逻辑单元主要负责程序运算与判断,控制单元负责协调组件与个…

    Linux干货 2017-07-30
  • Linux程序包管理

      Linux的各个release版本开发商,在发布各种应用程序,以及一些团体发布应用程序时,通常会根据发布的程序所适应的开发语言,使用环境,预设参数等,事先编译完成一个可以在相应平台上安装的程序包供使用者直接使用,该程序包含有安装前(preinstall)操作系统环境检测的脚本,程序包中所有文件的相关信息,程序预定义的配置参数文件,程序…

    Linux干货 2016-11-30
  • Nginx 基础 (IO模型、编译安装、几大块配置文件详解)

    Nginx基础 前言 apache在设计的时候已经考虑了并发访问模型,select()机制可以响应1024个访问,但是当数量再大,千万级别的时候http就响应不过来了。这个时候,nginx的出现解决了这一个问题。nginx是一个安装简单、配置文件简单、占用内存少、稳定性高、处理并发能力非常强、灵活好用等有点聚集于一身的轻量级服务器。在Linux操作系统中,N…

    Linux干货 2016-12-24
  • 文件系统管理和挂载

    磁盘结构 设备类型:     块设备:block,存取单位“块”,例如,磁盘     字符设备:char,存取单位“字符”,键盘 设备文件:关联至一个设备驱动程序,进而能够跟之对应硬件设备进行通信 设备号码:     主设备号:major …

    Linux干货 2016-08-29