查找find及压缩与解压

find 

根据时间戳:
以“天”为单位;
              -atime [+|-]#, 
               #: [#,#+1)   2 那就是大于等于二天小于三天
              +#: [#+1,∞] +4 大于等于五天及五天以上
              -#: [0,#)    -3 0至三天以内的不包含3天  #find /etc/ -atime -1  (passwd magedu)

              -mtime 
              -ctime
       以“分钟”为单位: 
              -amin   #find /etc/ -amin -1
              -mmin 
              -cmin

     -perm
      mode:精确权限匹配  # find -perm 755
      +mode[/mode] 任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰
              # find -perm /444   # find -perm +111
        -mode   每一类对象都必须同时拥有指定权限,与关系0 表示不关注 # find -perm -777
              #find  -perm /444 任何一位有4 就可以筛选出 (还可以表示为+444)
              #fing  -perm /044 组和其他人4有就可以筛选出(还可以表示为+044)
              #find  -perm /400 只要user上有4就可以筛选出(还可以表示为+400)
              #find  -perm -200 user上必须有2
              #find  -perm -210 user上必须有2,组上必须有1
              #find  -perm -666 每位权限上必须有6,但是不包括766
              查找find及压缩与解压
查找find及压缩与解压
    -print 默认的处理动作,显示至屏幕 # find -perm -777  -print只显示文件路径
    -delete 直接删除所查找到的文件,不询问。 # find -perm /111 -delete(删除满足条件的文件)
    -ls 长列出所查找到的文件 ,显示权限等 # find -perm /777 -ls
    -fls file 将查找到的文件长列出导入到指定文件。
    > file 
      #find /etc/ -regex “..conf$” -fls /app/find.txt不包含错误信息
      #less /app/find.txt
      也可以如下:
      #find /etc/ -regex “.
.conf$” >/app/find1.txt
      #vim /app/find1.txt
    #find /etc/ -regex “..conf$” >find1.txt 2>&1 可以导出错误结果
   
    -ok command {} \; 对查找到的文件当做下一命令的参数去执行(交互式)

        #find /etc/ -regex “..conf$” -ok cp -a {} /app/{}.bak \;
        cp一个文件 -a 表示文件复制过程权限,链接都不改变 {}代表原文件就是前面搜索到的文件 {}.bak代表目的文件
          #find /etc/ -regex “..conf$” -ok cp -a {} /app/{}.bak \;-maxdepth 1表示一级目录下的文件
          #find /etc/ -maxdepth 1 -regex “.
.conf$” -ok rm -rf {} \;  删除命令 

    -exec command \; 对查找到的文件当做下一命令的参数去执行(非交互式)
         #find /etc/ -maxdepth 1 -regex “..conf$” -exec cp -a {} /app/ \; -maxdepth 1表示一级目录下的文件 跟ok
         一样但是少了询问
         # find /etc -regex   “.
.conf$” -exec ls {} \;

find -name “.conf” -exec cp {} {}.orig \;
find /tmp -ctime +3 -user joe -ok rm {} \;
find ~ -perm -002 -exec chmod o-w {} \;
find /data –type f -perm 644 -name “
.sh” –exec chmod 755 {} \;
find /home –type d -ls

    {}:用于引用查找到的文件名称自身 

 xargs:

    touch a{1..1000000} 当创建很多文件是rm就会删除不了这时用 xargs来参数传递

    echo {1..30000000} | xargs touch

查找find及压缩与解压

     find |xargs rm

查找find及压缩与解压

    由于很多命令不支持管道|来传递参数,而日常工作中有这个必要,所以就有了xargs
 注意:文件名或者是其他意义的名词内含有空格符的情况,有些命令不能接受过多参数,
      命令执行可能会失败,xargs可以解决
       如:

          find /sbin -perm +700|xargs ls -l

查找find及压缩与解压

     find 和 xargs 格式:find| xargs ccommand
   

练习:
1、查找/var目录下属主为root,且属组为mail的所有文件

find /var -user root -a -group mail -ls

查找find及压缩与解压

2、查找/var目录下不属于root、lp、gdm的所有文件

find /var -not \( -user root -o -user lp -o -user gdm \) -ls

查找find及压缩与解压

3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件

find /var/ -mtime -7 -not -user root -not -user postfix -ls

查找find及压缩与解压

4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

find / -nouser -o -nogroup -a -atime -7 -ls

查找find及压缩与解压

5、查找/etc目录下大于1M且类型为普通文件的所有文件

find /etc/ -size +1M -a -type f -ls

查找find及压缩与解压

6、查找/etc目录下所有用户都没有写权限的文件

find /etc ! -perm /222 -ls

查找find及压缩与解压

7、查找/etc目录下至少有一类用户没有执行权限的文件

find /etc ! -perm -111  -ls

查找find及压缩与解压

   gnome 搜索工具 图形化的搜索工具

压缩和解压:
compress
.Z  #compress abc(原有文件没有生产新文件 abc.z)

-d 解压缩   #compress -d abc.Z  查找find及压缩与解压

             uncompress  #uncompress  abc.Z

查找find及压缩与解压

zcat X.Z > X 解压并导入新文件

-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。 #compress -c abc (看到的全是乱码其实是
          压缩文件,并将压缩文件的内容打印出来) 
         #compress -c abc > abc.Z 原本的文件还在并生产压缩文件   #compress -dc abc.Z > abc 
 s
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。 #compress -v abc
演示过程: #cp /var/log/messages . #ls #ls -lh查看详细信息 #cp messages messages1  #cat messages1 >> messages (尽量让文件大点多导入几次)
           # cp messages abc 拷贝  #compress abc压缩 (原有文件没有生产新文件 abc.z)
           #compress -dc abc.Z > abc 
           rm -rf abc
           ln messages abc (创建硬链接) 当两个文件是链接是 # compress  abc没用 但是 # compress  -f abc就可以压缩
           messages不变链接数减一

           > 压缩过程权限会改变因为相当于又重定向了 , 直接压缩文件不导入权限并不改变 
           原文件会丢失

gzip 
.gz  #gzip messages 生成messages.gz 原文件会丢失

-d 解压缩  # gzip -d messages.gz 
gunzip
zcat X.gz > X
-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。# gzip -c messages >messages.gz
              # gzip -c messages  #gzip -dc messages.gz> messages 

-f  如果文件是链接文件,默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
-# 数字越大,压缩比越高,速度越慢,文件越小。
-1 等于 –fast
-2,3,4,5,6(default),7,8
-9 等于 –best
     可tab补齐

bzip2
.bz2
-d 解压缩
bunzip
bzcat X.bz2 > X
-k 保留原文件
-c 将结果打印到屏幕上,配合重定向,不会覆盖原文件,但权限会变。
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
-# 数字越大,压缩比越高,速度越慢,文件越小。
-1 等于 –fast
-2,3,4,5,6,7,8
-9 等于 –best (default)

xz
.xz
-d 解压缩
xzcat 
-k 保留原文件
-f 默认不对硬链接数为2及以上的文件压缩,加上f,强制压缩指定文件,而其他同inode的文件硬链接数减1.
-v 显示详细过程。
-# 数字越大,压缩比越高,速度越慢,文件越小。
-0 等于 –fast
-1 -2,3,4,5,6(default),7,8
-9 等于 –best 

zip
.zip
unzip
|zip 将生成的文件名 –
可以将管道前的输出结果转为文件并压缩。通过此方式压缩的文件只能使用“unzip -p 压缩包 > 新文件 ”来解压缩
unzip -p 预览解压缩后的内容到屏幕,可以配置重定向将结果保存到指定文件,权限会发生变化。

        zip -r 新文件名.zip 被压缩打包的工具(可以多个文件)

tar
-cf 创建包名字  原文件(可以指定多个)
-tf 包名字   显示包中的文件名
-tvf 详细显示包中的文件名
-rf 包名字 新文件名(可以指定多个)
–delete -f 包名字 被删除的文件名(可以指定多个)
-xf 包名字 解出所有的文件到当前目录
-xf 包名字 文件名 解所指定的文件到当前目录
-C 解包到指定目录
-v 显示过程
-Jcf 创建包的名字(.tar.xz) 原文件(可以指定多个) 打包并用xz压缩
-jcf 创建包的名字(.tar.bz2) 原文件(可以指定多个) 打包并用bzip压缩
-zcf 创建包的名字(.tar.gz) 原文件(可以指定多个) 打包并用gzip压缩
-T 指定个列表,包含需要被打包的文件,以换行符为间隔
-X 指定个排除列表,以换行符为间隔
分割:
     分割大的tar文件为多份小文件:

split –b Size –d tar-file-name prefix-name 将tar包分隔为多个文件
splid  -b 1M -d messades.tgz messades-parts -b文件划分大小, -d 文件名
splid  -b 5k -d test.tar.gz newtest 分成五个小文件
cat 被分隔出的多个文件名 > 单个文件名
cat newtest.tar.gz0
> test.tar.gz2

cpio复制
ls * |cpio -o > 文件名.cpio  打包。 #ls |cpio -ov > new.cpio
         ls group gshadow passwd shadow |cpio -o >aaa
cpio -id < 文件名.cpio 解开被cpio打包的文件 #cpio -id <new.cpio 查看new.cpio的文件
gzip 文件名.cpio  生成文件名为文件名.cpio.gz 
       
/boot/initramfs-xxxx.img 
Centos6: cpio.gz文件:
                     #zcat initramfs-xxxx.img |cpio -id
                #zcat aaa.cpio.gz|cpio -id 解压被cpio打包的文件
Centos7: cpio文件 :
                    #cpio -id < initramfs-xxxx.img
-tv < 文件名.cpio 预览cpio打包的文件。
      将etc目录备份:
          #find ./etc -print | cpio -ov >etc.cpio
       内容预览:
          #cpio -tv < etc.cpio
       要解包文件:
          #cpio -idv < etc.cpio

xfs
ext4 
rescue

sda1   /boot /mnt/sysimage/boot
sda2   /        /mnt/sysimage 
sda3   swap
sda4     extend
sda5   /app     /mnt/sysimage/  
/mnt/sysimage/root  -> /mnt/sysimage/lib64

ldd +绝对路径 查看动态库
/lib64/libc.so.6
chroot /mnt/sysimage 
cd ../../../   

dns chroot > /var/name/chroot/var/named

A  (A)
  a.so  (A)
  b.so  (A)
  c.so  (B) 如果想要安装A 要检测B有没有,没有就不安装,A依赖于B B又依赖于C C又依赖于A 循环

A -> B  -> C -> A
debian deb dpkg 包管理器会检测当要安装包时会自动检测所需要的所有包,并一起安装
ubuntu deb  apt-get包的管理器

redhat   redhat package manager  = rpm 红帽子的包管理器
RPM package manager  RPM对应包的批量管理 YUM 
GNU  Gnu is not unix 

YUM DNF fedora

httpd-xxxx.tar.gz包含:   xxx.c源代码  …so  readme.txt =  >  httpd-xxxx.rpm 变成

httpd.deb 
ftp.deb
bind.deb

练习:统计光盘中Packages下,各种架构的rpm包的数量。
ls *.rpm |rev |cut -d. -f2|sort |rev |uniq -c  rev 对于筛选出的 反着输出
Packages]# ls | egrep -o “[^\.]+\.rpm$” |cut -d. -f1 |sort |uniq -c

A -> B -> C -> D -> A

testapp.rpm
testapp.so文件
/usr/lib/testapp/testapp.so
/usr/bin/testapp 执行文件存放地方
#cd /run/media/root/CentOS\ 7\ x86_64/ 包的存放路径
#cd Packages/

解决包的依赖管理工具:
             yum: rpm包管理器的前端工具
             apt-get:ded包管理器前端工具
             zypper: suse上的rpm 前端工具
             dnf:Fedora 18+rpm 包管理器前端管理工具
查看二进制程序所依赖的库文件:
            ldd /PATH/TO/BINARY_FILE  #ldd /sbin/ifconfig
管理及查看本机装载的库文件:
             ldconfig
             /sbin/ldconfig -p:显示本机已经缓存的所有可用库文件名及文件路径映射关系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
缓存文件: /etc/ld.so.cache
           如:
              #cd /etc/ld.so.conf.d/
              #vim testapp.conf
                 /user/lib/testapp/
              #ldconfig
rpm  数据库var/lib/rpm #cd /var/lib/rpm 记录安装过的包数据和信息
   -i –instal 安装包
                 #rpm -i httpd-2.4.6-45.el7.centos.x86_64.rpm 
                 #rpm -i httpd-tools-2.4.6-45.el7.centos.x86_64.rpm  (httpd包的安装,还依赖于两个库文件)
                 #rpm -i screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm 
–test 检测
–nodeps 忽略依赖性关系直接安装
-v 显示详细信息
        -vi 显示包名
-vv 显示更详细信息
-h 显示进度
-ivh 显示包名进度条
    –test: 测试安装,但不真正执行安装,即dry run模式
             #rpm -ivh –test screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm 
             –nodeps:忽略依赖关系
             –replacepkgs 已安装过的包重装。
             –replacefiles 其他已安装的RPM包的文件,与即将装的RPM中的文件冲突时,则覆盖文件并安装。
             –nosignature: 不检查来源合法性
             –nodigest:不检查包完整性
             –noscripts:不执行程序包脚本:
      %pre: 安装前脚本; –nopre  #rpm -ivh –noscripts  –nopre screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm 
      %post: 安装后脚本; –nopost
      %preun: 卸载前脚本; –nopreun
      %postun: 卸载后脚本; –nopostun

   -Uvh 当有旧的版本的包时,则卸载旧包再装新包,如没有旧包,直接装新包。
   -Fvh 当有旧的包时,卸载旧包装新包,无旧包时,nothing
   –oldpackage 降级  已有新包,装旧包。
   –force 强制安装。–replacepkgs  –replacefiles  –oldpackage

查询安装包:

   -q 软件包名  查询已安装过的软件包名。#rpm -q tree
    -qa 列出所有的已安装过的rpm包
                #rpm -qa
    -qa “name*” #rpm -qa “tre*”
    -qa |grep name #rpm -qa |grep tree
    -qf 查询一个文件来自于哪一个rpm包 (已安装的rpm) #rpm -qf /bin/ls
    -q –changelog 版本更新日志 #rpm -q –changelog tree
    -qc 查询软件包的配置文件(不是所有包都有配置文件)#rpm -qc aide
    -qd 查询软件包的帮助文档  #rpm -qd aide
    -qi 查询软件包的详细信息  #rpm -qi tree #rpm -qi `rpm -qf /bin/ls`
    -ql 查询软件包所安装到系统当中的所有文件路径 #rpm -ql tree 
    -q –scripts 查询软件包自带的脚本  #rpm -q –scripts `rpm -qf /bin/ls`
         -q –provides 查询自身的功能  #rpm -q –provides `rpm -qf /bin/ls` #rpm -q –provides tree
    -qR 查询实现自身的功能需要什么能力
    -qp[licd] rpm包 查看未安装的rpm包的各项信息 #rpm -qp http
         -p 针对尚未安装的程序包文件做查询操作

   -e 软件名
    –nodeps 忽略依赖性。强制卸载

    –import GPG-KEY….  导入公钥 gpd生成公钥
    -qa “gpg-pubkey*”   显示所有已导入的公钥
    -e gpg-pubkey….
    -K rpm包 验证某rpm签名是否合法 #rpm -K tree-1.6.0-10.el7.x86_64.rpm (md5 not ok是应为没有公钥 )

    进入centos6.9光盘 # ls  #rpm –import RPM-CPG-KEY-Centos-6(导入公钥)
    #rpm -qa “gpg-pubkey*” 查看公钥信息

yum rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
yum存储了很多rpm已及包的相关元数据(防置于特定目录repodata下)yum需要建立仓库仓库repository
     配置文件:/etc/yum.conf为仓库提供公共配置
               /etc/yum.repos.d/*.repo为仓库的指向提供配置
#vim /etc/yum.conf  yum有缓存
#cd  /etc/yum.repos.d 提供一些默认的地址
#vim /etc/yum.repos.d
编写仓库:
      #cd  /etc/yum.repos.d
      #vim magedu.repos.d 文件必须以repo 结尾
   格式:
        [base]名 仓库的id
        name=magedu 26 repo
        baseurl=http://172.16.0.1/centos/6/目录
                file:///media/dvd/centos6.9 本地地址
                file:///run/media/root/Centos\ 7\ x86_64
        gbgkey=file:///run/media/root/Centos\ 7\ x86_64/RPM-CPG-KEY-Centos-7公钥
        gpgcheck=1 不检查默认1 就不用公钥的设置了照样能安装 # yum install httpd
        #cd #yum repolist 
repolist 列出repo信息   #cd #yum repolist 列出仓库
install 包名 # yum install httpd安装
        enabled={1|0}代表仓库是否启动 1开启
:.!将内容显示出来

设置缓存:
#cd /var/cache/yum/
#ls
#cd x86_64/
#ls
#cd #
#ls
#cd base/
#yum clean all
# yum repolist

原创文章,作者:MOMO,如若转载,请注明出处:http://www.178linux.com/84550

(0)
MOMOMOMO
上一篇 2017-08-12
下一篇 2017-08-12

相关推荐

  • N26-第五周博客作业

    一、显示当前系统上root、fedora或user1用户的默认shell; [root@promote home]# grep -E ‘^(root|fedora|user1)’ /etc/passwd |cut -d : -f7 /bin/bash /bin/bash /bin/bash [root@promote home]# 注…

    Linux干货 2017-05-15
  • 文本处理(1)

    文本处理工具最全整理上半部

    Linux干货 2018-03-15
  • HAProxy实现请求的80端口转发至后端的8000端口并实现动静分离

    一 实验目的 用HAProxy作为负载均衡器,实现把前端请求调度到后端,前端监听80端口,转发至后端的8000端口,并会对访问资源进行判断实现不同的访问内容转发至相对应的服务器。 二 实验拓扑 三 实验环境 IP 功能 192.168.20.108 HAProxy 192.168.237.129 Nginx 192.168.237.130 Nginx+PHP…

    Linux干货 2016-12-19
  • RPM包管理功能全解。【第三周】

    CentOS系统上rpm命令管理程序包: 安装、升级、卸载、查询、校验、数据库维护 rpm命令:rpm [OPTIONS] [PACKAGE_FILE]     安装:-i, –install     升级:-U, –update,&n…

    Linux干货 2016-11-26
  • Linux计划任务

    计划任务 工作当中有时候需要将某件事情在未来的某个特定的时间执行,而自己确不在机器旁,该如何是好?像这样在每天特定的时间内去安排做一些事情这样,一种事情我们就称之为例行性的计划任务,其实在我们的操作系统当中都有类似的例行性任务计划功能,那如何去像设定闹钟一种在Linux上指定例行性计划任务并实施,主要有两种工具:at和crontab   计划任务分…

    Linux干货 2016-09-19
  • configure –help 参数详解

    configure –help 参数详解及apache2.2静态编译和动态编译参考

    Linux干货 2016-05-25