locate find 压缩

locate
文件系统查找
数据库查找/var/lib/mlocate/mlocate.db
依赖事先构建的索引
updatedb  手动更新数据库,才可以找到新建文件
查找时,遍历整个根文件系统,耗资源
查找速度快,模糊查找,非实时查找
搜索文件的全路径
locate + 关键词
locate -i  不区分大小写的搜索
locate -n N  列举前N个匹配
locate conf  搜索名称或路径中带有"conf"的文件
locate -r '\.conf$'  使用正则表达式来搜索".conf"结尾的文件
find
实时查找
遍历指定路径,查找文件
查找速度略慢,精确查找,实时查找
可能只搜索用户具备读取和执行权限的目录
查找路径:默认是当前目录
查找条件:指定查找标准,默认是找出指定路径的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕
-maxdepth level     最大搜索目录深度,指定目录为第一级
-mindepth level
-name "文件名称"    支持使用glob. * ? [] [^]
-iname "文件名称"   不区分字母大小写
-inum n             按inode号查找
-samefile name      相同inode号的文件
-links n            链接数为n的文件
-regex "pattern"    以pattern匹配整个文件路径的字符串,而不仅仅是文件名称
-user 用户名       查找属主是此用户的文件
-group 组名           查找属组是此组名的文件
-uid uid号           查找是此uid号的文件
-gid gid号           查找是此gid号的文件
-nouser             查找没有属主的文件
-nogroup            查找没有属组的文件
-type 类型(b块设备 c字符设备 d目录 f普通文件 S套接字 h/L符号链接文件)
-size +6k           (6k,+∞)
-size -6k           (0,5k]
-atime/-amin +6     查看(读取)时间大于或等于7天/分钟
-atime/-amin -6     小于6天/分钟
-mtime/-mmin +6     修改时间大于或等于7天/分钟
-mtime/-mmin -6     修改时间小于6天/分钟
-ctime/-cmin        修改时间
-perm mode          精确匹配权限
-perm /mode         任何一类对象(u,g,o)的权限中只要有一位匹配  或  (centos7版本之前需要加mode前要加/)
-perm -mode         每一类对象都必须同时拥有指定权限  且
-perm 002           属主,属组有无权限不关心,other有w权限即可
    find -perm 755      权限755文件
    find -perm /222     任意人有w权限即可
    find -perm -222     每个人都有w权限,才匹配
    find -perm -002     other有w权限即可
    find /etc -mmin -1  1分钟内被修改的文件
组合条件
    -a 与
    -o 或
    -not,! 非
    (非A)或(非B)=非(A且B)    !A -o !B = !(A -a B)
    (非A)且(非B)=非(A或B)    !A -a !B = !(A -o B)
        find -not \(-user joe -o -user jone\)
-ls
-delete             找到后删除
-fls file           找到的长格式信息保存到文件中
-ok cmd {}\;        找到的文件执行cmd命令,执行前会交互式要求用户确认,{}表示找到的文件名称本身
-exec cmd {}\;      找到的文件执行cmd命令,无需确认
xargs               解决"命令不支持管道|来传递参数"的问题,产生某个命令的参数,读入stdin的数据,空格符或者回车符将stdin的数据分割成为args,解决某些命令不能接受过多参数且执行失败的问题
    find | xargs cmd 
    ls f* | xargs rm
    find /sbin -perm +700 |xargs ls -l 
    find -name "*.conf" -exec cp {} {}.org \;   备份配置文件,添加.org扩展名
    find /tmp -ctime +3 -user joe -ok rm {} \;  删除存在时间超过3天以上的joe的临时文件
    find ~ -perm -002 -exec chmod o-w {} \;     在主目录中寻找可以被其他用户写入的文件
    find /data -type f -perm 644 -name ".sh" -exec chmod 755 {}\;
    find /home -type d -ls 
    ./bin/f.sh      二级目录
    ./bin/f1/f2/f3/f4.sh    五级目录
        find -maxdepth 5 -mindepth 3 -name f1.sh  只能搜到f4.sh 
        find /tmp -not \( -user root -o -name "f*" \) -ls   /tmp目录下属主不是root,文件名不以f开头的文件
        非>与>或
        find -name "*.log" -o -name "*.sh"              *.log和*.sh文件都显示
        find -name "*.log" -o -not -name "*.sh" -ls     *.log和*.sh文件都不显示,其他都显示
prune               剪切
    find /etc -path '/etc/sane.d' -a -prune -o -name "*.conf"       查找/etc下,除了/etc/sane.d目录的其它所有.conf后缀的文件  -path用单引号
    find /etc \( -path '/etc/sane.d' -o -path '/etc/fonts' \) -a prune -o name "*.conf" 查找/etc下,除了/etc/sane.d和/etc/fonts目录的其它所有.conf后缀的文件
练习
    find /root -name "*.sh" -exec cp -a {} /app/{}.bak \;       app下如果无/root/bin文件夹,会出错,app下,mkdir -p root/bin 即可
    find /var/ -user root -group mail
    find /var/ -not \( -user root -o -user lp -o -user gdm \)
    find /var/ -mtime -7 -not \( -user root -o -user postfix \)     最近一周被修改过的文件
    find / -nouser -o -nogroup -atime -7        
    find /etc/ -not -perm /222      都无读权限的文件
    find /etc/ -not -perm /111      都无执行权限的文件
    find /etc/init.d/ -perm -113    严格匹配
压缩
file-roller     图形界面的压缩
compress/uncompress     .Z              压缩文件
gzip/gunzip             .gz             压缩文件
bzip/bunzip             .bz2            压缩文件
xz/unxz                 .xz             压缩文件    压缩比大,解压缩的时间就长
zip/unzip               无后缀要求       压缩目录
    compress file                   file——>file.Z,file文件不存在了,名字变红
    compress -d file.Z              file.Z——>file,file.Z不存在了
    compress -c file                压缩内容输出至屏幕,原文件存在
    compress -c file > file.Z       压缩内容输出至文件,原文件存在
    compress -dc file.Z > file      解压缩内容输出至文件,原文件存在
    zcat file.Z                     解压缩输出至屏幕,原文件存在
    zcat file.z > file              解压缩内容输出至文件,原文件存在
    
    gzip file                       压缩文件
    gzip -d file.gz                 解压缩 
    gzip -c file                    压缩内容输出至屏幕
    gzip -dc file.gz > file         解压缩内容输出至文件              
    gzip -9 file                    最大的压缩比压缩文件
    zcat file.gz > file             解压缩输出至文件
    gzip file1 file2                压缩file1和file2,互不影响
    
    bzip2 file                      
    bzip2 -d file.bz2 = bunzip      
    bzip2 -k file                   压缩文件,原文件存在
    bzcat file.bz2 > file           
    
    xz file                         压缩文件 
    xz -d file.xz = unxz            解压缩文件
    xz -k file                      压缩文件 
    xz -9 file                      压缩 
    xzcat file.xz > file            解压缩文件 
    
    zip -r /testdir/sysconfig /etc/sysconfig        打包压缩 递归 新文件名称/testdir/sysconfig 原文件名称/etc/sysconfig     
    unzip sysconfig.zip 
    cat /var/log/messages|zip messages -            压缩文件名称message 被压缩文件夹-
    unzip -p message > message
    后缀无要求zip
    后缀有要求compress/gzip/bzip/xz/tar
    
    tar -cvf etc.tar /etc/          创建归档,c创建打包文件,v过程,f指定新的打包文件名称etc.tar,必须写后缀名称
    tar -rvf etc.tar /app/m         追加文件至归档,不支持压缩文件追加内容
    tar -tvf etc.tar                查看归档文件中的文件列表
    tar -xvf etc.tar                展开归档,默认解包至当前目录
    tar -xvf etc.tar -C /tmp        指定解包至哪个地方 C大写
    归档+压缩
        tar zcvf etc.tar.gz /etc        gzip 
        tar jcvf etc.tar.bz2 /etc       bzip2 
        tar Jcvf etc.tar.xz /etc        xz 
        tar xvf etc.tar.xz -C /root     xvf此处加/不加对应字母都行 .tar.xz=.txz
    /boot/initramfs-...img              此文件是gzip压缩,解压缩需要加后缀.img.gz 
        cp /boot/initramfs-...img /app 
        mv initramfs-...img initramfs-...img.gz 
        gzip -d init...img.gz 
    tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist     T指定输入的文件 X指定删除的文件
    split
        split -b 空间大小 -d 被分割文件 prename(指明前缀,切割后形成的)     
            -d文件后缀为数字
            默认文件后缀是字母
        split -b 1M etc.tar.bz2 etcsplit        形成的文件名称:etcsplitaa etcsplitab etcsplitac  默认文件后缀是字母
        split -d -b 1M etc.tar.bz2 etcsplit     形成的文件名称:etcsplit00 etcsplit01 etcsplit02  -d文件后缀为数字
        合并多个小文件
            cat etcsplit* > etc2.tar.bz2 
        分割后,大文件仍存在
        合并后,小文件仍存在
    
    cpio -o 打包 
    cpio -i 解包
    cpio -d 解包生成目录
    cpio -t 预览
    cpio -v 过程
        find ./etc -print | cpio -ov > etc.cpio  备份etc目录
        cpio -tv < etc.cpio     内容预览
        cpio -idv < etc.cpio    解包文件
        重定向方式将文件打包备份,还原恢复
        解压以".cpio"或".tar"结尾的文件
        cpio [选项] > 文件名
        cpio [选项] < 文件名

推荐阅读更多精彩内容