zoukankan      html  css  js  c++  java
  • 正式班D15

    2020.10.26星期一  正式班D15

    9.6 文件查找命令find

    9.6.1 基本命令

    • find [path] [-option] [expression]

    9.6.2 基本用法

    • 基础

      # 按文件名 -name
      [root@ccc ~]# find /etc -name 'ifcfg-ens33'
      /etc/sysconfig/network-scripts/ifcfg-ens33  # 查找ifcfg-ens33
      [root@ccc ~]# find /etc -name 'ifcfg-*'
      /etc/sysconfig/network-scripts/ifcfg-lo
      /etc/sysconfig/network-scripts/ifcfg-ens33
      /etc/sysconfig/network-scripts/ifcfg-ENS33  # 查找以ifcfg开头的文件
      [root@ccc ~]# find /etc/ -iname 'ifcfg-ens33'
      /etc/sysconfig/network-scripts/ifcfg-ens33
      /etc/sysconfig/network-scripts/ifcfg-ENS33  # i不区分大小写
      
      # 按文件大小 -size
      [root@ccc ~]# 
      [root@ccc ~]# find /etc -size +5M  # 大于5M的文件
      /etc/udev/hwdb.bin
      [root@ccc ~]# find /etc -size 3M  # 等于3M的文件
      [root@ccc ~]# find /etc -size -1k  # 小于1k的文件
      /etc/crypttab
      /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
      /etc/environment
      /etc/exports
      /etc/motd
      /etc/sysconfig/network-scripts/ifcfg-ENS33
      [root@ccc ~]# find /etc -size +3M -ls  # -ls找到的处理动作
          70 8188 -r--r--r--   1 root     root      8384358 10月 16 12:32 /etc/udev/hwdb.bin
      8809555 3816 -rw-------   1 root     root      3905267 4月  1  2020 /etc/selinux/targeted/active/policy.kern
      13347359 3816 -rw-r--r--   1 root     root      3905267 4月  1  2020 /etc/selinux/targeted/policy/policy.31
      
      # 指定查找的目录深度 -maxdepth levels
      [root@ccc ~]# find / -maxdepth 5 -a -name 'ifcfg-ens33'
      /etc/sysconfig/network-scripts/ifcfg-ens33
      /test/ifcfg-ens33  # -a并且,-o或者,不加-a默认就是-a
      
      # 按时间找 -atime -mtime -ctime
      [root@ccc ~]# find . -mtime +15  # 修改时间超过15天
      ./.bash_logout
      ./.bash_profile
      ./.bashrc
      ./.cshrc
      ./.tcshrc
      ./Python-2.7.18.tgz
      ./1.jpg
      [root@ccc ~]# find . -mtime 1  # 修改时间等于1天
      [root@ccc ~]# find . -mtime -3  # 修改时间3天以内
      .
      ./.bash_history
      ./t.txt
      ./f.txt
      ./1.py
      ./.viminfo
      ./a.txt
      
      # 按文件属主、属组找 -user -group
      [root@ccc ~]# find /home -user lili  # 属主是lili的文件
      /home/lili
      /home/lili/.bash_logout
      [root@ccc ~]# find /home -group lili  # 数组是lili的文件
      /home/lili
      /home/lili/.bash_logout
      [root@ccc ~]# find /home -user lili -a -group lili  # 属主lili且数组lili的文件
      /home/lili
      /home/lili/.bash_logout
      [root@ccc ~]# find /home -user lili -group lili  # 同上-a
      /home/lili
      /home/lili/.bash_logout
      [root@ccc ~]# find /home -user lili -o -group lili  # 属主lili或数组lili的文件
      /home/lili
      /home/lili/.bash_logout
      
      [root@ccc ~]# su - lili  # 切换到lili用户
      [lili@ccc ~]$ touch 111.txt  # 创建111.txt
      [lili@ccc ~]$ exit
      登出
      [root@ccc ~]# ll /home/lili/111.txt 
      -rw-rw-r-- 1 lili lili 0 10月 26 14:34 /home/lili/111.txt
      [root@ccc ~]# vim /etc/group
      [root@ccc ~]# find /home -nogroup -ls # 用户还存在,在/etc/group删除了记录
      8494233    0 drwx------   2 lili     1000           98 10月 26 14:34 /home/lili
      8494238    4 -rw-r--r--   1 lili     1000           18 4月  1  2020 /home/lili/.bash_logout
      8494239    4 -rw-r--r--   1 lili     1000          193 4月  1  2020 /home/lili/.bash_profile
      8493577    4 -rw-r--r--   1 lili     1000          231 4月  1  2020 /home/lili/.bashrc
      8493579    0 -rw-rw-r--   1 lili     1000            0 10月 26 14:34 /home/lili/111.txt
      8493580    4 -rw-------   1 lili     1000           19 10月 26 14:34 /home/lili/.bash_history
      
      [root@ccc ~]# find /home -nouser -ls
      8494233    0 drwx------   2 1000     1000           98 10月 26 14:34 /home/lili
      8494238    4 -rw-r--r--   1 1000     1000           18 4月  1  2020 /home/lili/.bash_logout
      8494239    4 -rw-r--r--   1 1000     1000          193 4月  1  2020 /home/lili/.bash_profile
      8493577    4 -rw-r--r--   1 1000     1000          231 4月  1  2020 /home/lili/.bashrc
      8493579    0 -rw-rw-r--   1 1000     1000            0 10月 26 14:34 /home/lili/111.txt
      8493580    4 -rw-------   1 1000     1000           19 10月 26 14:34 /home/lili/.bash_history
      
      [root@ccc ~]# find /home -nouser -ls -o -nogroup -ls
      8494233    0 drwx------   2 1000     1000           98 10月 26 14:34 /home/lili
      8494238    4 -rw-r--r--   1 1000     1000           18 4月  1  2020 /home/lili/.bash_logout
      8494239    4 -rw-r--r--   1 1000     1000          193 4月  1  2020 /home/lili/.bash_profile
      8493577    4 -rw-r--r--   1 1000     1000          231 4月  1  2020 /home/lili/.bashrc
      8493579    0 -rw-rw-r--   1 1000     1000            0 10月 26 14:34 /home/lili/111.txt
      8493580    4 -rw-------   1 1000     1000           19 10月 26 14:34 /home/lili/.bash_history
      
      # 按文件类型 -type
      [root@ccc ~]# find /dev -type f  # f普通
      [root@ccc ~]# find /dev -type d  # d目录
      [root@ccc ~]# find /dev -type l  # l链接
      [root@ccc ~]# find /dev -type b  # b块设备
      [root@ccc ~]# find /dev -type c  # c字符设备
      [root@ccc ~]# find /dev -type s  # s套接字
      [root@ccc ~]# find /dev -type p  # p管道文件
      
      # 根据inode号查找 -inum n
      [root@ccc ~]# find / -inum 1811
      
      # 按文件权限 -perm
      [root@ccc ~]# find . -perm 644 -ls
      
      
    • 后续处理

      -print
      -ls
      -delete
      -exec
      -ok
      
      # -exec非交互
      [root@ccc ~]# find /etc/ -name "ifcfg-*" -exec cp -rvf {} /tmp ;
      "/etc/sysconfig/network-scripts/ifcfg-lo" -> "/tmp/ifcfg-lo"
      "/etc/sysconfig/network-scripts/ifcfg-ens33" -> "/tmp/ifcfg-ens33"
      "/etc/sysconfig/network-scripts/ifcfg-ENS33" -> "/tmp/ifcfg-ENS33"
      # -ok交互
      [root@ccc ~]# find /etc/ -name "ifcfg-*" -ok cp -rvf {} /tmp ;
      < cp ... /etc/sysconfig/network-scripts/ifcfg-lo > ? y
      "/etc/sysconfig/network-scripts/ifcfg-lo" -> "/tmp/ifcfg-lo"
      < cp ... /etc/sysconfig/network-scripts/ifcfg-ens33 > ? y
      "/etc/sysconfig/network-scripts/ifcfg-ens33" -> "/tmp/ifcfg-ens33"
      < cp ... /etc/sysconfig/network-scripts/ifcfg-ENS33 > ? y
      "/etc/sysconfig/network-scripts/ifcfg-ENS33" -> "/tmp/ifcfg-ENS33"
      
      # 删除的一种用法
      [root@ccc ~]# find /etc/ -name "ifcfg-*" -exec rm -rf {} ;
      [root@ccc ~]# find /etc/ -name "ifcfg-*" -delete
      
    • 拓展:find用管道必须结合xargs

      [root@ccc ~]# find . -name 'cjx*.txt' |xargs rm -rf  # 删除的另一种方式
      
      [root@ccc ~]# find /etc/ -name 'ifcfg-ens33' |xargs -I {} cp -rf {} /var/tmp/
      [root@ccc ~]# ll /var/tmp/
      总用量 1
      -rw-r--r-- 1 root root 262 10月 26 15:07 ifcfg-ens33
      
      [root@ccc ~]# find /test -name 'ifcfg-ens33' | xargs -I {} mv {} /ttt
      
      

    9.7 文件的上传与下载

    9.7.1 下载

    • wget命令

      # 将远程包下载到本地,-O指定下载到哪里,也可省略-O 本地路径
      wget -O 本地路径 远程包链接地址
      [root@ccc ~]# wget -O ./2.jpg http://pic17.nipic.com/20111115/8754739_105205490111_2.jpg
      
      # 如果wget下载提示无法建立SSL连接,需加上选项--no-check-certificates
      [root@ccc ~]# wget --no-check-certificate -O ./2.jpg http://pic17.nipic.com/20111115/8754739_105205490111_2.jpg
      
      
    • curl命令

      # curl命令是一个利用URL规则在命令行下工作的文件传输工具
      # 支持文件的上传和下载,是综合传输工具,按传统称curl为下载工具
      # wget会将下载的内容直接打印在屏幕上
      
      [root@ccc ~]# curl -O ./3 https://tiyu.baidu.com/match/S10/tab/赛程
        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
      Dload  Upload   Total   Spent    Left  Speed
        0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: 
      
      # 如果遇到下载提示无法建立SSL连接,使用-k选项或者--insecure
      [root@ccc ~]# curl -k -O ./3 https://tiyu.baidu.com/match/S10/tab/赛程
      
    • sz命令

      # 系统默认没有sz命令,需下载yum install -y lrzsz
      # 将服务器上选定的文件下载/发送到本机
      [root@ccc ~]# sz 1.jpg
      

    9.7.2 上传

    • rz

      # 系统默认没有rz命令,需下载yum install lrzsz -y
      # 运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器
      [root@ccc ~]# rz  # 如果文件已经存在,则上传失败,可以用-E选项解决
      [root@ccc ~]# rz -E  # -E如果目标文件名已存在,则重命名传入文件。新文件名多一个点或一个数字(0..999)
      

    9.8 输出与重定向

    9.8.1 基本概念

    • 几种情况

      # 输出即把相关对象通过输入设备(显示器等)显示出来
      # 输出分为正确输出和错误输出
      # 一般情况下输出设备为显示器
      # 标准输入设备为键盘
      
      0  # 标准输出
      1  # 标准正确输出
      2  # 标准错误输出
      

    9.8.2 输出重定向

    • > # 覆盖

    • >> # 追加

      # 正常输出是把内容输出到显示器上
      # 输出重定向是把内容输出到文件中
      
      # 标准输出重定向(1可以省略)
      命令>文件  # 以覆盖的形式把命令的正确输出输出到指定的文件或设备当中
      命令>>文件  # 以追加的方式把命令的正确输出输出到指定的文件或设备中
      
      # 标准错误输出重定向
      错误命令 2>文件  # 以覆盖的形式把命令的错误输出输出到指定的文件或设备中
      错误命令 2>文件  # 以追加的方式把命令的错误输出输出到指定的文件或设备中
      
      # 例子
      ifconfig>test.log  # 把ifconfig执行显示的正确内容写入test.log当前界面不再显示执行结果
      # 错误输出重定向>与>>后面不能加空格
      
      # 正确输出与错误输出同时保存
      命令>文件 2>&1  # 以覆盖的方式把正确输出和错误输出都保存到同一个文件夹中
      命令>>文件 2 >&1  # 以追加的方式把正确输出和错误输出都保存到同一个文件中
      命令 &>文件  # 以覆盖的方式把正确输出和错误输出打偶把存到同一个文件中
      命令 &>>文件  # 以追加的方式把正确输出和错误输出都保存到同一个文件夹中
      命令>>文件1 2>>文件2  # 把正确的输出追加到文件1中,把错误的输出追加到文件2中
      
      # 注意
      命令 >>file.log 2>&1  与  命令 &>>file.log  # 命令作用相同
      命令 >>file.log 2>>file2.log  # 正确日志和错误日志分开保存
      ls &>/dev/null  # 系统常见用法,正确输出或错误输出都不要(null理解为黑洞或垃圾站)
      
      

    9.8.3 输入重定向

    • cat >目标文件<内容来源(源文件地址):也可以写成cat<内容来源>目标文件(将源文件内容写至目标文件)
    • cat >目标文件<<EOF(键盘输入,最后以EOF结尾)将键盘输入内容写入目标文件,也可以写成cat<<EOF>目标文件
  • 相关阅读:
    目标检测 anchor 理解笔记
    目标检测 IOU(交并比) 理解笔记
    目标检测 非极大值抑制(Non-Maximum Suppression,NMS)
    c# 获取当前时间的微秒
    [macOS开发.NET Core] 一个简单的WEB程序
    海康相机SDK二次开发只有视频无声音问题
    [macOS开发.NET Core] 开篇 & 抉择 & 先利其器
    Linux学习--4.用户和组的管理
    Linux学习--3.命令及查看命令帮助
    Linux学习--2.文件管理的基本命令
  • 原文地址:https://www.cnblogs.com/caojiaxin/p/13881392.html
Copyright © 2011-2022 走看看