zoukankan      html  css  js  c++  java
  • 文件查找与压缩

    文件查找和压缩

    文件查找
    locate:非实时查找,数据库查找
    find:实时查找

    locate
    特点:
        1,查找速度快
        2,模糊查找
        3,非实时查找
        locate查询系统上预建的文件索引数据库
            /var/lib/mlocate/mlocate.db
        updatedb命令可以更新数据库
        
        i,忽略大小写
        -n N,只列前几个
            示例:locate -in 1 File10
        -r,使用基本正则表达式
        updatedb,更新数据库
        
    find
    特点:
        1,查找速度略慢
        2,精确查找
        3,实时查找
        4,可能只搜索用户具备读取和执行权限的目录
    语法:find [option] [查找路径] [查找条件] [处理动作]
        查找路径默认是当前目录
        查找条件,可以以文件名,大小,类型,权限等
        处理动作,对符合条件的文件做操作,默认输出至屏幕
    指搜索层级:
        -maxdepth level:最大搜索层级
            find /etc/ -maxdepth 1 -name passwd
        -mindepth level:
            示例:find / -maxdepth 9 -mindepth 6 -name home
    先梳理目录内的文件,再处理指定目录
        -depth:先处理目录内的文件,再处理指定目录
    根据文件名和inode查找    
        -name,-iname(忽略大小写),inum n(按照inode查找)
        -samefile name 相同inode号的文件
            示例:find -samefile abc,查找与abc文件inode相同的文件
        -links n 链接数为n的文件
        -regex “PATTERN”:以PATTERN匹配整个文件路径,而非文件名称
            示例:find /data/ -regex ".*.sh",.*表示匹配所有路径
    根据属主,属组查找
        -user USERNAME;-group GROUPNAME;-uid UserID;-gid GroupID;-nouser;-nogroup;
    根据文件类型查找
        -type TYPE:
        f:普通文件,d:目录文件,l:符号链接文件,s:套接字文件
        b:块设备文件,c:字符设备文件,p:管道文件
            示例:find /dev/ -type b
    空文件或目录
        -empty:示例--find /data/ -type f -empty
    查找条件:        
        与:-a    
        或:-o    
        非:-not !,示例:find /data -not -name file10;find /data ! -name file10
    德·摩根定律:
        (非 A) 或 (非 B) = 非(A 且 B)
        (非 A) 且 (非 B) = 非(A 或 B)
      示例:
        !A -a !B = !(A -o B)
            find / -not -user wang -a -not -name root
            find / -not ( -user wang -o -user root )
        !A -o !B = !(A -a B)
            find / -not -nouser -o -not -user root
            find / -not ( -nouser -a -user root )
    排除目录
        -path,配合-prune使用
        查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
        find /etc -path /etc/sane.d -a -prune -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"
    根据文件大小查找
        -size [+|-] k,M,G,c(byte)
            -size 5M:表示(4M,5M],大于4M小于等于5M的文件
            -size -5M:表示[0,4M],0到4M,包含4M的文件
            -SIZE +5M:表示(5M,无穷大),大于5M,不包含5M的文件
    根据时间戳查找
    以天为单位
        -atime [+|-] #,
            5:表示4天之前,到5天之前的变化的文件,不包含5天
            +5:表示5天以前有变化的文件,包含5天
            -5:5天之内时间戳有变化的文件
        -mtime:
        -ctime:
    以分钟为单位
        -amin,-mmin,-cmin
    根据权限查找
        -perm [/|-] MODE,7版本之前为[+|-]
        444:表示精确查找,权限为444的文件
        /444:(u,g,o)中只要有一个有读权限即可
        -444:(u,g,o)中必须都有读权限
     
    处理动作:
        -ls:类似于对查找到的文件执行“ls -l”命令
            find /data/ -name file1 -ls
        -delete:删除查找到的文件
            find /data/ -name file0 -delete
        -fls file:查找到的所有文件的长格式信息保存至指定文件中
            find /data/ -name file1 -fls file0
        -ok COMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
            find /data -name file0 -ok rm {} ;
        -exec COMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令
            find /data -name file1 -exec cat {} ;
        {}: 用于引用查找到的文件名称自身
        find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

    参数替换:xargs
        ls | xargs rm
        find /bin/ -perm -7000 | xargs ls -Sl



    文件压缩
    compress,uncompress...Z
        -d:解压缩,相当于uncompress
        -c:结果输出至标准输出,不删除原文件
        -v:显示详情
            compress -c passwd > passwd.Z
    zcat file.Z:不显式解压缩的前提下查看文件内容

    gzip,gunzip...gz
        -#:可以指定压缩比,1-9,值越大,压缩比越大,默认为6
        gzip -c messages > messages.gz
        gzip -c -d messages.gz > messages
        gunzip messages.gz > messages

    bzip2,bunzip2,bzcat...bz2
        -k 保留原文件
        bzip2 -c passwd > passwd.bz2
        
    xz/unxz/xzcat...xz
        xz压缩比最高,可能速度会慢

    zip,unzip...zip
        zip -r 可以压缩文件夹
            zip -r scripts .
        


    文件打包
    tar工具
        -c:创建
        -p:保留权限
        -v:显示详情
        -f:后面接打包后的文件名
            tar -cvpf etc.tar etc
        -r:追加文件至归档,不支持对压缩文件追加
            tar -rf etc.tar passwd,追加passwd到etc.tar
        -t:查看归档文件中的文件列表
            tar -tf etc.tar
        -x:展开归档
            tar -xf etc.tar
    归档并压缩:
        -j--bzip2
        -z--gzip
        -J--xz
            tar -zcvf etc.tar.gz etc
        
    排除文件:
        -exclude
            tar -zcvf etc.tgz --exclude=etc/passwd etc
        split
            split -b 5M etc.tgz etc-1
        合并:cat etc-1* > etc.tgz



    cpio:复制文件从或到归档
    cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件
    cpio [选项] > 文件名或设备名
    cpio [选项] < 文件名或设备名
    选项:    
        -o:将文件拷贝打包成文件
        -O filename:输出到指定的归档文件名
        -A:追加
        -i:解包
        -I filename:对指定的归档文件名解压
        -t:预览
        -F filename:使用指定的文件名代替标准输入或输出
        -d:解包生成目录
        将查找到的目录打包为etc.cpio
            find -type d|cpio -ov > etc.cpio
        将passwd追加至etc.zpio
            find /data/ -maxdepth 1 -name passwd |cpio -oA -F etc.cpio
        内容预览
            cpio -tv < etc.cpio
        cpio -idv < etc.cpio
       

  • 相关阅读:
    2020软件工程02
    自我介绍
    2019年春总结作业
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
    第八周作业
    第七周学习总结
    第六周学习总结
  • 原文地址:https://www.cnblogs.com/wangyanqiang/p/11761249.html
Copyright © 2011-2022 走看看