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

     locate 

    查找文件 locate 文件名  他是模糊匹配的而且不是实时的 查询不到你刚刚建立的文件,他是某个时间点去扫描的,所以我们可以去更新一下updatedb 然后再去查找 就会看到刚刚建立的文件

    etc/updatedb.cong 文件是配置  更新的时候不去那些文件下去找,比如tmp文件 就不去搜索  你去掉了就会搜索

    • -i 不区分大小写的搜索 
    • -n  N 只列举前N个匹配项目 
    • -r  使用基本正则表达式
    • Locate –r “.jpg$” 
    • Locate –r “.(jpg|png)$”

    find 最厉害的  是实时查找的  可有很多筛选选项  比如文件类型  文件大小  或在一个目录下找

    find  绝对路径/root   -name file  查找root 文件夹下名字是file的文件

    • -regex “PATTERN”:以PATTERN匹配整个文件路径,而非文件名称 也可以使用正则表达式
    • -name  c*.conf  查找所有已c 开头的 .conf结尾的文件
    • -type d 查找文件类型是目录的
    • -user  student 查找文件拥有者是student 的文件
    • -perm 660 查找权限是660的 文件    -perm -660 只要满足这个权限 都行

    根据类型   -type TYPE • f: 普通文件 • d: 目录文件 • l: 符号链接文件 • s:套接字文件 • b: 块设备文件 • c: 字符设备文件 • p: 管道文件

      与:-a  或:-o  非:-not   ! 

    文件大小 -size 

      如:-6k 表示[0,5k] 

      如:+6k 表示(6k,∞) 

     

    处理动作

    -ok COMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令,对 于每个文件执行命令之前,都会交互式要求用户确认

    -exec COMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令

     

    find  /root -name file -exec rm -rf {}  ;    //-exec 方式连接 找到文件之后的操作  {}是占位符 表示前面找到的文件  ; 表示结束

    find  /root   -name file -ok rm -rf {}  ;    //ok方式连接  是交互式的  他会问你  你要删除**吗

    find /date –name “f*” –a –type f  //-a 是并且的意思  既是f开头又是文件的 (-a 可以省略)

    find /date –name “f*” –o –type f  //-o 是或者的意思  要么是f开头要么是文件的

    find /date –name “f*” –o –type f –ls    //你本意是想找到之后ls出来,但是现在由于 &&的优先级高于||,所以出现错误 正确应该是

    find /date (–name “f*” –o –type f  )–ls    或者

    find /date –name “f*”-ls –o –type f –ls

    find /home –not ( -user wang –o –user mage ) –ls    //找出来 所有者不能是wang和user的东西

    find /var/log –size +10k –exec cp {} /tmp/test/{}.bak ;  

    find /data –type  f -perm 644  -name “*.sh” –exec chmod 755 {} ;     //查找/data下的权限为644,后缀为sh的普通文件,增加执行权限 

    find  -name  “*.conf”  -exec  cp {}  {}.orig  ;    //备份配置文件,添加.orig这个扩展名 

     

    xargs

    由于很多命令不支持管道|来传递参数,xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数据,并且以空格符或回车符将 stdin 的数据分隔成为参数

    echo user{1,,10} | xargs –n1 useradd 一条命令创建10个用户// xargs 把前面命令的输出 一次传一个给 后面的命令当参数

     

    find –name “f*.txt” –print0 |xargs -0 rm  //找到这些文件 不以 “ ”作为分隔符 ,因为如果一个文件名中含有” ” 那就会搞混了。

    Xargs  //把标准输出 给到第二个命令的参数

    Echo user{1..10} | xargs useradd  //不加的话相当于 一次性给了 useradd 运行不了,

    echo user{1..10}|xargs -n1 useradd  //useradd 只能识别一个用户,所以一次传一个

    压缩

    tar -cvf test3.tar 444/ 1126/ 2019-11-08.log    打包 后面文件随便跟

    tar -xvf test3.tar  //解包

       然后将tar包 压缩成 gzip  ;  gzip test3.tar  源文件会没有 现在只有 test3.tar.gz       解压  gzip -d test3.tar.gz 同样源文件没有,现在只有test3.tar

      将tar包 压缩成 bz2  ;bzip2 test3.tar  源文件会没有 现在只有 test3.tar.bz2     

    bzip2 -dk test3.tar.bz2  将其解压,解压完之后,源文件不删除,现在有 test3.tar.bz2  与 test3.tar

    gzip 将文件压缩成 .gz格式    -d 选项可以解压缩 (源文件都会删除)

    bzip2 将文件压缩成 .bz2格式  -d 选项可以解压缩  -k 选项可以保留源文件

    xz [OPTION]... FILE ...

    •     -k keep, 保留原文件
    •     -d 解压缩
    •     -# 压缩比,取值1-9,默认为6  
    •     unxz file.xz  解压缩 

    zip/unzip 

    打包压缩  zip –r /backup/sysconfig  /etc/sysconfig/ 

    解包解压缩  unzip sysconfig.zip 

    tar -zcvf *.gz ..........  既打包又压缩

    tar -zxvf 文件名字 -C 路径 解压这个文件 到哪里

    tar -jcvf *.bz2 ..........  既打包又压缩 格式是bz2

    tar -jxvf 文件名字 -C 路径 解压这个文件 到哪里

    tar [OPTION]... 

    (1) 创建归档,保留权限     

      tar -cpvf /PATH/FILE.tar FILE...

    (2) 追加文件至归档: 注:不支持对压缩文件追加     

      tar -r -f /PATH/FILE.tar FILE...

    (3) 查看归档文件中的文件列表     

      tar -t -f /PATH/FILE.tar

    (4) 展开归档     

      tar -x -f /PATH/FILE.tar     

      tar -x -f /PATH/FILE.tar -C /PATH/

    (5) 结合压缩工具实现:归档并压缩     

      -j: bzip2, -z: gzip, -J: xz

    要有多努力才能对得起奔波的脚步和身上的期望
  • 相关阅读:
    HDU 1285
    HDU 1251
    HDU 1166
    UVA 10003
    HDU 5968
    CodeForces 371C
    POJ 2456
    POJ 2250
    oracle的start with connect by prior
    Hibernate session中的createCriteria方法
  • 原文地址:https://www.cnblogs.com/hxfcodelife/p/11939371.html
Copyright © 2011-2022 走看看