文件查找和压缩

 

1.使用locate命令
查询系统上预建的文件索引数据库
  /var/lib/mlocate/mlocate.db
索引的构建过程需要遍历整个根文件系统,极消耗资源
工作特点:
  查找速度快
  模糊查找
  非实时查找
  搜索的是文件的全路径,不仅仅是文件名
  可能只搜索用户具备读取和执行权限的目录
locate KEYWORD
  -i:不区分大小写的搜索
  -r:使用正则表达式  
2.使用find命令
实时查找工具,通过遍历指定路径完成文件查找
工作特点
  查找速度慢
  精确查找
  实时查找
  可能只搜索用户具备读取和执行权限的目录
语法:
  find [OPTION]...[查找路径][查找条件][处理动作]
查找路径:指定具体目标路径,默认为当前目录
查找条件:指定的查找标准,可以为文件名、大小、类型、权限等标准进行;
  1.指定搜索层级
  -maxdepth level 最大搜索目录深度,指定目录(指定查找的路径)为第一级
  -mindepth level 最小搜索目录深度
  2.根据文件名和inode查找:
  -name "文件名称":支持使用glob
  -samefile name :相同inode号的文件(硬链接)
  -regex "PATTERN"以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
  3.根据属主、属组查找
  -user USERNAME:查找属主为指定用户(UID)的文件
  -group GROUPNAME:查找属组为指定组(GID)的文件
  -uid UserID:查找属主为指定的UID号的文件
  -gid GroupID:查找属组为指定的GID号的文件
  -nouser:查找没有属主的文件
  -nogroup:查找没有属组的文件
  4.组合条件
  与:-a
  或:-o 
  非:-not,!
  德摩根定律:
  (非A)或(非B)=非(A且B)
  (非A)且(非B)=非(A或B)
  示例:
  !A-a!B=!(A-oB)
  !A-o!B=!(A-aB)
  括号的转义字符 \( xxx \)   xxx与括号之间有空格
  5.根据条件大小来查找:
  -size[+|-]#UNIT
    查用单位:k,M,G,c(byte)
  #UNIT:(#-1,#)
    如:6k表示(5k,6k]
  -#UNIT:[0,#-1]
    如:-6k表示[0,5k]
+#UNIT:(#,oo)
    如:+6k表示(6k,oo)
  6.根据文件类型查找:
  -type TYPE
    f:普通文件
    d:目录文件
    l:符号链接文件
    s:套接字文件
    b:块设备文件
    c:字符设备文件
    p:管道文件
  空文件或目录
  -empty
  find /app -type d -empty (空目录)
Linux下的三个时间:
1. Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
2. Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
3. Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。
  7.根据时间戳查找
  以天为单位
  -atime [+|-]#
    -#:[0,#)
    #:[#,#+1)
    +#:[#+1,oo]
  -mtime
  -ctime
  以分钟为单位
    -amin
    -mmin
    -cmin  
  8.根据权限查找
  -perm [/|-]mode           (换算成三位二进制来看,0忽略,只关心1是否匹配)
    mode:精确权限匹配
    /mode:任何一类(u,g,o)对象的权限中只能一位匹配即可,或关系
    -mode:每一类对象都必须同时拥有指定权限,与关系(非精确匹配,包含即可,find -perm -666   文件权限为667的也能匹配到,因为7中包含了6)
 
处理动作:对符合条件的文件做操作,默认输出至屏幕
  -print:默认的处理动作,显示至屏幕
  -ls:类似于对查到的文件执行ls -l命令
  -delete:删除查找到的文件
  -ok COMMAND {} \; 对查找到的文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
  -exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
  {}:用于引用查找到的文件名称本身
  find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令
参数替换xargs
  由于很多命令不支持管道来传递参数,而日常工作中有这个必要,所以就有了xargs命令
  xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔成arguments
  注意:文件名或者时其他意义的名词内含有空格符的情况
  有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决
  示例:
    ls f*|xargs rm
    find /sbin -perm +700|ls -l 这个命令是错误的
    find /sbin -perm +700|xargs ls -l
3.压缩和解压缩工具
  常用功能:压缩源文件并保留源文件;解压缩文件;指定压缩比进行压缩;压缩工具要注意文件后缀
 
  1.gzip/gunzip
  gzip [OPTION]...file...
    -d:解压缩,相当于gunzip
    -c:将压缩或解压缩的结果输出至标准输出
    -#:1-9,指定压缩比,值越大压缩比越大
    gzip -c messages >messages.gz
  2.bzip2/bunzip2
   bzip2 [OPTION]...file...
    -k:keep,保留原文件
    -d:解压缩
    -#:1-9指定压缩比,默认为9
   3.xz/unxz
    xz [OPTION]...file...
      -k:保留原文件
      -d:解压缩
      -#:1-9,压缩比,默认为6
   4.zip/unzip
    压缩文件
      zip Packages.zip Packages
    打包压缩
      zip -r /hjm/sysconfig /etc/sysconfig
    解包解压缩
      unzip sysconfig.zip
    5.不显示解压缩的前提下查看文件内容
     zcat——gz
     bzcat——bz2
     xzcat——xz
4.打包工具 
  tar [OPTION]...
  (1)创建归档
    tar -cpvf /PATH/TO/SOMEFILE.tar file...
  (2)追加文件至归档 注:不支持对压缩文件追加
    tar -rf  /PATH/TP/SOMEFILE.tar file...
  (3)查看归档文件中的文件列表
    tar -tf /PATH/TO/SOMEFILE.tar
  (4)展开归档
    tar -xf /PATH/TO/SOMEFILE.tar -C /PATH/
  (5)结合压缩工具实现:归档并压缩
    -j:bzip2,-z:gzip,-J:xz
 
posted @ 2019-11-06 13:41  明a  阅读(137)  评论(0编辑  收藏  举报