20170729 文件查找和压缩

一、文件非实时查找 locate

  • locate查询系统预建文件索引数据库/var/lib/mlocate/mlocate.db,所以查询速度很快
  • 由于数据库不能实时更新文件变动,所以locate可能查询不到新建立、修改的文件
  • 文件索引构建更新为周期任务,文件遍历过程非常消耗系统资源,一般在系统空闲时进行,手动更新使用命令updatedb
  • 属于模糊查找,查找结果是文件的全路径,可能只能搜索到用户具有读取和可执行权限的目录
  • 语法:locate [option] keyword
  • 选项:
-i           //不区分大小写搜索
-n #         //只显示前#行匹配结果
-r regex     //搜索符合正则表达式描述的文件

二、文件实时查找 find

通过遍历指定目录实时查找文件,属于精确查找,所以速度较慢,同样可能只能搜索到用户具有读取和可执行权限的目录

(一)语法:

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

  • 查找路径:指定具体目标路径;默认为当前目录
  • 查找条件:指定查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
  • 处理动作:对符合条件的文件做操作,默认输出至屏幕

(二)查找条件详述

  • 指定搜索层级
-maxdepthlevel     //最大搜索目录深度,指定目录为第1级
-mindepthlevel     //最小搜索目录深度
  • 根据文件名和inode查找
-name              //文件名称:支持使用glob
-iname             //文件名称:不区分字母大小写
-inum n            //按inode号查找
-samefile name     //相同inode号的文件
-links n           //链接数为n的文件
-regex "PATTERN"   //以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
  • 根据属主、属组查找
-user USERNAME     //查找属主为指定用户(UID)的文件
-group GRPNAME     //查找属组为指定组(GID)的文件
-uid UserID        //查找属主为指定的UID号的文件
-gid GroupID       //查找属组为指定的GID号的文件
-nouser            //查找没有属主的文件
-nogroup           //查找没有属组的文件
  • 根据文件类型查找
-type f     //普通文件
-type d     //目录文件
-type l     //符号链接文件
-type b     //块设备文件
-type c     //字符设备文件
  • 组合条件

    • 并且 -a
    • 或者 -o
    • 非 !, -not
    • 德摩根定律
      !A -o !B = ! (A -a B)
      !A -a !B = ! (A -o B)
    • 三种条件的判断先后:“非”优先级最高,“并且”次之,“或者”最低,当不按照此顺序判断时需要增加括号\(\),注意转义字符
  • -purne 排除目录

  • 实验:

  • 根据文件大小来查找
    语法:-size [+|-]#UNIT, UNIT: k, M, G
    #UNIT: (#-1, #] UNIT,如-size 6M表达的范围为(5, 6]M
    -#UNIT: [0, #-1] UNIT,如-size -6M表达的范围为[0, 5]M
    +#UNIT: (#, ∞) UNIT,如-size +6M表达的范围为(6, ∞)M

    • 实验:查找/etc目录下大小大于1M的普通文件
  • 根据时间戳查找
    语法:

    • 以天为单位
      -atime [+|-]#
      -mtime [+|-]#
      -ctime [+|-]#
    • 以分钟为单位
      -amin [+|-]#
      -mmin [+|-]#
      -cmin [+|-]#
    • 范围的意义
      #: [#,#+1)
      +#: [#+1,∞]
      -#: [0,#)
  • 根据权限查找

    • 语法:--perm [/|-] MODE
      MODE 精确匹配权限
      / MODE 只要u,g,o至少一方的权限与MODE声明匹配,即权限或关系
      -MODE 必须u,g,o都具有MODE声明权限,即权限与的关系
    • 注意:当使用/或者-时,当MODE声明中存在0,即表明对此位置的权限设置不关注
    • 实验:
      1、/app目录下有10个文件file1至file10,每个文件的权限如下:

      2、执行命令find /app -perm 766,代表按照命令的权限要求精确搜索,结果如下:

      3、执行命令find /app -perm /111,代表只要文件的属主、属组、其他人中至少一方有可执行权限即匹配搜索条件,结果如下:

      4、执行命令find /app -perm -424,代表只有文件属主有读权限、属组有写权限、其他人有读权限三个条件同时匹配才能被搜索到,结果如下:

      5、执行命令find /app -perm -402,代表只有文件属主有读权限、其他人有写权限两个条件同时匹配才能被搜索到,而属组的权限设置搜索过程不关心,结果如下:

(三)处理动作

  • -print 默认动作,搜索结果输出至屏幕
  • -ls 对搜索结果执行ls -l命令后的结果
  • -delete 删除查找到的文件
  • -fls file 将搜索结果的长格式信息保存至文件file
  • -ok COMMAND {} \; 对搜索结果执行COMMAND命令,每个搜索文件执行COMMAND命令前有交互式确认,大括号指代搜索结果,命令结尾必须用\;结束
  • -exec COMMAND {} \;对搜索结果执行COMMAND命令,命令直接执行没有提示,语法类似-ok
  • 实验:将/app目录下其他人拥有写权限的文件名称增加后缀.bak


(四)参数替换 xargs

  • xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔成为arguments
  • 有些命令不能接受过多参数,使用xargs可以突破命令的参数数量限制
  • find与xargs命令结合使用:find | xargs command
  • 实验:将/sbin目录下属主拥有读、写、可执行权限的文件列表用ls -l命令显示出来

三、压缩、解压缩和归档工具

(一)compress/uncompress

  • compress 压缩,生成.Z后缀压缩文件,程序对后缀名敏感
    -d 解压缩,相当于uncompress
    -c 结果输出至标准输出,可使用重定向在压缩/解压缩时保留源文件
    -v 显示过程
  • uncompress 解压缩,程序对后缀名敏感
  • zcat 解压缩结果输出至标准输出,可视作uncompress -c
  • 实验:


(二)gzip/gunzip

  • gzip 压缩,生成.gz后缀压缩文件,程序对后缀名敏感
    -d 解压缩,相当于gunzip
    -c 结果输出至标准输出,可使用重定向在压缩/解压缩时保留源文件
    -# 指定压缩比1-9,值越大压缩比越高,默认为6
  • gunzip 解压缩,程序对后缀名敏感
  • zcat 解压缩结果输出至标准输出,可视作gunzip -c
  • 实验:


(三)bzip2/bunzip2

  • bzip2 压缩,生成.bz2后缀压缩文件,程序对后缀名敏感
    -d 解压缩,相当于bunzip2
    -k 保留源文件
    -# 指定压缩比1-9,值越大压缩比越高,默认为9
  • bunzip2 解压缩,程序对后缀名敏感
  • zcat 解压缩结果输出至标准输出,可视作gunzip -c
  • 实验:


(四)xz/unxz/xzcat

  • xz 压缩,生成.xz后缀压缩文件,程序对后缀名敏感
    -d 解压缩,相当于unxz
    -k 保留源文件
    -# 指定压缩比1-9,值越大压缩比越高,默认为6
  • unxz 解压缩,程序对后缀名敏感
  • xzcat 解压缩结果输出至标准输出,可视作unxz -c
  • 实验:

    从结果可以看出,当改变压缩文件的后缀.xz后无法解压。unxz解压对文件后缀名敏感。上文的uncompress,gunzip,bunzip2都是后缀名敏感的。

(五)zip/unzip

  • 可以打包压缩解压缩,而之前的compress,gzip,bzip2,xz只能压缩单个文件
  • 语法:
    zip 压缩后文件 压缩前文件
    -r 递归压缩文件夹,用于打包压缩
    -p 解压缩结果输出至标准输出,可重定向至文件
  • 实验:


(六)tar 磁带归档

  • 语法:tar [option...] [file]...
  • 用法:
tar cf file.tar file...        //创建归档
tar rf file.tar file...        //追加文件至归档,不支持对压缩文件追加归档
tar tf file.tar                //查看归档文件中的文件列表
tar xf file.tar                //展开归档,解包文件输出至当前目录
tar xf file.tar -C path        //展开归档,解包文件输出至指定目录path
tar zcf file.tar.gz file...    //创建归档并使用gzip压缩,bzip2使用选项j,xz使用选项J
tar zxf file.tar.gz 
//解压缩tar.gz压缩包,bzip2使用选项j,xz使用选项J,系统会自动识别压缩文件类型,z、j、J可以省略
tar zcf file.tar.gz -T includefilelist -X excludefilelist 
//T选项指定压缩文件列表includefilelist,X选项指定排除压缩文件列表excludefilelist
  • split 分割压缩文件 split -b size -d tar-file-name prefix-name
  • -b选项指定分割单位,-d选项指定被分割的压缩文件和分割后的文件群前缀
  • 使用cat配合重定向合并被分割压缩文件cat file-part* > file.tar.gz
  • 实验:
    1、将/etc目录下所有以f开头的文件和目录压缩为file.tar.gz文件
    2、查看file.tar.gz文件内的文件列表的前5行
    3、将file.tar.gz文件解压缩,解压缩文件输出至/boot目录

    4、分割file.tar.gz文件,以3k为分割单位,分割文件前缀为file-part
    5、将分割的文件合并为文件file1.tar.gz

(七)cpio 从文件复制或复制文件到

  • cpio 通过重定向方式将文件进行打包,或者恢复打包文件,可以解压后缀名为.cpio或.tar的文件
  • 语法:
cpio [option] < filename
cpio [option] > filename
  • 选项:
-o     打包
-i     解包
-t     预览
-v     显示过程
-d     解包生成目录
  • 实验:

1、将/app/etc目录下的所有文件打包到/app下的etc.cpio文件

cd /app
find ./etc | cpio -ov > etc.cpio

2、查看etc.cpio文件内容

cpio -tv < etc.cpio

3、解包etc.cpio 文件到/mnt目录下

cd /mnt
cpio -idv < /app/etc.cpio
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容