文件查找与压缩

文件查找和压缩

文件查找
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
   

猜你喜欢

转载自www.cnblogs.com/jkfd-zlgs/p/11761249.html