TangWei's Studio

Linux系统文件查找与解压缩方法

Word count: 1,918 / Reading time: 8 min
2018/04/12 Share

Linux系统文件查找与解压缩方法

如同我们平时在操作 Windows系统时,文件查找与解压缩文件是经常要使用到的操作,Linux系统中也要经常用到相同的操作,今天我们就来介绍Linux系统中的一些文件查找与解压缩时使用到的工具。

一、文件查找

1.locate命令

  • 优点:搜索速度快,节省系统性能(生产环境适合使用locate)

  • 缺点:不能即时更新(文件索引数据库在每次开机后更新),要想搜索最新文件需手动输入命令updatedb更新文件索引数据库,模糊搜索;

Locate命令适合搜索不经常变化的文件,如系统文件

查询系统上预建的文件索引数据库:

/var/lib/mlocate/mlocate.db

locate
  • -i 忽略大小写

  • -b 只搜索基名符合条件的文件

  • -n 只列出前几个

  • -r 支持扩展正则表达式

2.find命令

  • 优点:精确查找;实时查找;搜索条件灵活

  • 缺点:查找速度慢;占用系统性能

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

指定搜索层级:

不指定情况下默认当前目录下搜索
  • -maxdepth level 最大搜索深度,默认为1层

  • -mindepth level 最小搜索深度

根据文件名和inode查找:
  • -name “filename” 支持使用通配符glob;注意文件名一定加””

  • -iname “filename” 不区分字母大小写

  • -inum n 按节点号inode查找文件

  • -samefile name 查找相同inode的文件,即硬链接

  • -links n 查找链接数为n的文件

  • -regex “PATTERN” 使用正则表达式搜索

根据属主、属组查找:
  • -user USERNAME:查找属主为指定用户(UID)的文件

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

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

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

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

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

  • -nouser -o -nogroup 查找没有属主或没有属组的文件

根据文件类型查找:
-type TYPE:
  • f: 普通文件

  • d: 目录文件

  • l: 符号链接文件

  • s: 套接字文件

  • b: 块设备文件

  • c: 字符设备文件

  • p: 管道文件

搜索空文件或目录:
-empty 查找空文件或空目录

例:find/app -type d -empty

组合条件:
  • -a 与

  • -o 或

  • -not,! 非

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

(非A)且(非B)=非(A或B)

注意:使用()表示组合条件时,括号内两边一定要加空格,且括号一定要加转义符”\”。

根据文件大小来查找:
-size[+|-]#UNIT

常用单位:k,M,G,c(byte)

  • 1024c (1024-1,1024]

  • +1024c (1024,+)

  • -1024c [0,1024-1]

根据时间戳查找:
以“天”为单位:
-atime[+|-]#
  • 3:[3,4)

  • +3:[4,+]

  • -4:[0,4)

1
-mtime
1
-ctime
以“分钟”为单位:
1
-atime
1
-mtime
1
-ctime
根据权限查找:
1
-perm[/|+|-]MODE
MODE:精确权限匹配(数字法)

/|+MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系;

CentOS6使用“+”,CentOS7使用“/”

-MODE:没类对象权限都有对应权限时,才会匹配,且关系;

处理动作:
  • -print 默认的处理动作,显示到屏幕

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

  • -delete 删除查找到的文件,不进行提示

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

  • -ok COMMAND{}\; {}代表前面搜索到的结果,-ok后必须跟\;结尾,语法要求;对查找到的每个文件执行COMMAND命令,每个文件执行命令时,会要求用户确认

1
find -name “f*” -ok rm {} \;

将f开头的文件删除,每个文件删除时会要求确认。

-exec COMMAND{}\;

对每个搜索到的文件执行COMMAND命令,不要求用户确认

1
find -name “f*” -exec mv {} /data/ \;

将f开头的文件移动到data目录下,不要求用户确认

二、压缩和解压缩

Linux系统中支持多种文件解压缩工具,不同压缩工具压缩比有所不同,压缩后的后缀名也不一样。要注意的是:前面我们说过在linux系统中,文件是不通过后缀判断的,但在解压缩中是个例外,不同的解压缩工具对后缀是有要求的。

1.Linux常见解压缩工具:

  • file-roller 图形化解压缩工具(类似于windows系统winrar)

  • compress/uncompress: .Z后缀

  • gzip/gunzip: .gz后缀(主流)

  • bzip2/bunzip2: .bz2后缀(主流)

  • xz/unxz: .xz后缀(主流,新兴)

  • zip

  • tar

  • cpio

compress/uncompress
  • -d 解压缩,相当于uncompress,压缩文件删除

  • -c 压缩结果输出至标准输出,不删除原文件

例:compress -c b > b.Z 解压文件b并且不删除

-v 显示详情

uncompress 解压缩,同compress -d,压缩文件删除

zcat file.Z > file 解压缩,原压缩文件不删除

gzip/gunzip
  • -d 解压缩,相当于gunzip

  • -c 将压缩结果输出至标准输出,不删除原文件

  • -v 显示详情

zcat file.gz > file 解压缩,原压缩文件不删除

bzip2/bunzip
  • -k 保留原文件

  • -d 解压缩

bunzip2 解压缩

bzcat 不解压缩前提查看文本内容,与gzip的zcat用法类似

xz/unxz
  • -k 保留原文件

  • -d 解压缩

unxz 解压缩,功能同xz -d

xzcat 功能同zcat,bzcat

压缩比:xz > bzip2 > gzip > compress

zip/unzip

打包压缩

1
zip -r /tsetdir/sysconfig /etc/sysconfig/

解包解压缩

1
unzip sysconfig.zip

cat /var/log/messages|zip messages

unzip -p message > message 解压缩重定向

tar工具:(Tape ARchive,磁带归档的缩写)打包工具,并不压缩

tar[OPTION]…

  • -c 创建一个打包文件

  • -C 指定解压的目录

  • -p 保留属性

  • -v 查看过程

  • -f 对哪个进行文件归档或打包

  • -t 查看列表

1.创建文档(打包文件或目录)
1
tar -cpvf /PATH/TO/SOMEFILE.tar FILE
2.追加文件到归档:注:不支持对压缩文件追加
1
tar -r -f /PATH/TO/SOMEFILE.tar FILE…
3.查看归档文件中的文件列表
1
tar -t -f /PATH/TO/SOMEFILE.tar
4.展开归档(解包)
1
tar -x -f /PATH/TO/SOMEFILE.tar
1
tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/
5.结合压缩工具实现:归档并压缩
  • -j:bizp2

  • -z:gzip

  • -J:xz

6.-T选项指定输入文件,-X选项指定包含要排除的文件列表
1
tar zcvf myback.tgz -T /root/includefilelist -X /root/excludefilelist
7.分割打的tar文件为多份小文件:

split

  • -b Size -d tar-file-name prefix-name

  • -b 1M –d mybackup.tgz mybackup-parts

  • -b 1M mybackup.tgz mybackup-parts

8.合并tar分割的多个小文件:
1
cat mybackup-parts* > mybackup.tar.gz
cpio

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

cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,他可以解压以

“cpio”或者”tar”结尾的文件

cpio[option] > 文件名或者设备名

cpio[option] < 文件名或者设备名

选项

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

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

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

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

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

  • -c 一种较新的存储方式

示例:

将etc目录备份

1
find ./etc -print |cpio -ov >etc.cpio

内容预览

1
cpio -tv < etc.cpio

解包文件

1
cpio -idv <etc.cpio

关于linux系统的文件查找和解压缩方法今天就先介绍到这里了。

CATALOG
  1. 1. Linux系统文件查找与解压缩方法
    1. 1.1. 一、文件查找
      1. 1.1.1. 1.locate命令
        1. 1.1.1.1. locate
      2. 1.1.2. 2.find命令
        1. 1.1.2.1. 不指定情况下默认当前目录下搜索
        2. 1.1.2.2. 根据文件名和inode查找:
        3. 1.1.2.3. 根据属主、属组查找:
        4. 1.1.2.4. 根据文件类型查找:
          1. 1.1.2.4.1. -type TYPE:
        5. 1.1.2.5. 搜索空文件或目录:
          1. 1.1.2.5.1. -empty 查找空文件或空目录
        6. 1.1.2.6. 组合条件:
        7. 1.1.2.7. 德摩根定律:
        8. 1.1.2.8. 根据文件大小来查找:
        9. 1.1.2.9. 根据时间戳查找:
          1. 1.1.2.9.1. 以“天”为单位:
          2. 1.1.2.9.2. 以“分钟”为单位:
          3. 1.1.2.9.3. 根据权限查找:
          4. 1.1.2.9.4. MODE:精确权限匹配(数字法)
        10. 1.1.2.10. 处理动作:
    2. 1.2. 二、压缩和解压缩
    3. 1.3. 1.Linux常见解压缩工具:
      1. 1.3.0.1. compress/uncompress
      2. 1.3.0.2. gzip/gunzip
      3. 1.3.0.3. bzip2/bunzip
      4. 1.3.0.4. xz/unxz
      5. 1.3.0.5. zip/unzip
      6. 1.3.0.6. tar工具:(Tape ARchive,磁带归档的缩写)打包工具,并不压缩
        1. 1.3.0.6.1. 1.创建文档(打包文件或目录)
        2. 1.3.0.6.2. 2.追加文件到归档:注:不支持对压缩文件追加
        3. 1.3.0.6.3. 3.查看归档文件中的文件列表
        4. 1.3.0.6.4. 4.展开归档(解包)
        5. 1.3.0.6.5. 5.结合压缩工具实现:归档并压缩
        6. 1.3.0.6.6. 6.-T选项指定输入文件,-X选项指定包含要排除的文件列表
        7. 1.3.0.6.7. 7.分割打的tar文件为多份小文件:
        8. 1.3.0.6.8. 8.合并tar分割的多个小文件:
      7. 1.3.0.7. cpio