文件查找与压缩

 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

要有多努力才能对得起奔波的脚步和身上的期望
原文地址:https://www.cnblogs.com/hxfcodelife/p/11939371.html