• linux之文件查找find grep详解,以及压缩归档


    .find

    linux里的实时查找工具,通过制定路径完成文件查找.

    find[options]...[查找路径] [查找条件] [处理动作]

    查找路径:查找的位置,默认是当前文件夹.

    查找条件:指定查找的标准,文件名,大小,类型,日期等.

    处理动作:对符合条件的文件做什么类型操作,默认是输出.

    查找条件

    • 根据文件名查找

      • -name 指定名称,可以使用正则

        find /etc -name *.conf -maxdepth 2
        
      • -iname 忽略大小写

      • -links n 引用磁盘次数为n的文件

        find -links 2
        
      • -regex 后面需要跟完整路径,而不是文件名,必须整个路径完全匹配

        find /etc -regex '/etc/ssh/sshd_config'
        # 用来判断是否存在
        
    • 指定搜索的层级

      • -maxdepth level 最大搜索深度,当前指定的目录为第一层

        find -maxdepth 3 -name filename
        
      • -mindepth level 最小的搜索深度,包括level层.

    • 根据属主,属组查找

      • -user usernam 查找属主为username的文件

      • -group groupname 查找属组为groupname的文件

      • -uid id 查找属主为id的文件

        查看 uid gid   id username
        
      • -gid id 查找属组为id的文件

      • nouser 查找没有属主的文件

        find / nouser
        
      • nogroup 查找没有属组的文件

    linux中,用户不是以名字为基准,而是以uid和gid号.之前绑定过,删除掉此账号则属主和属组处变成id号
    
    • 根据文件类型 -type

      find -type 
      
      • d目录
      • f文件
      • |符号链接
      • s套接字
      • b块设备
      • c字符设备
      • p管道文件
    • 空文件或空目录

      • -empty
      • 查找空目录 find -empty -type d
    • 条件

      • 默认是与 -a
      • 在条件之间 -o 或
      • 在条件之间-not 非
    • 摩根定律

      • 非 (A或者B) 非A且非B

        find !(-empty -o -type d)
        
        
      • 非(A且B) 非A或非B

        find !(-empty -a -type d)
        
        
    • 排除目录

      • 指定路径path 排除路径prune

        [root@localhost test]#find /etc -name *_config
        /etc/ssh/ssh_config
        /etc/ssh/sshd_config
        [root@localhost test]#find /etc -path /etc/ssh -name *_config
        
        
        find /etc -path '/etc/sane.d' -prune -o  -name "*.conf"
        find /etc ( -path '/etc/sane.d' -o -path '/etc/cups' ) -prune -o -name "*.conf"
        
        
    • 按照文件大小来查找

      • -size # (#-1, #] 不包括#-1,包括#
      • -size -# [0,#-1]
      • -size +# (#,...)
    • 按照时间来查找

      • -atime # [#, #+1)
      • -atime -# (0, #)
      • -atime +# [#+1,...]
      • 查找7天以后的文件 find -atime +7
      • -mtime
      • -ctime 改变属性之后变的时间
      • 以分钟为单位
        • -amin
        • -mmin
        • -cmin

    处理动作

    • -print 输出到屏幕 默认的处理动作.

    • -ls 类似于 ls-l 显示长格式

    • -delete 删除查找到的文件

    • -fls file 将查找到的结果以长格式保存到文件中

    • -ok command { } ; 对每一个查找到的文件执行command命令,在执行命令之前先提示用户先提示用户是否要执行.

    • -exec command{ } ;对查到的每一个文件执行command命令,在执行之前不提示,一次性交给后面处理

      find -size 2M -ok rm -rf {} ;
      # 提示命令
      find -siez 2M -exec rm -rf {} ;
      # 不提示命令
      
      

    xargs

    • 有的命令不支持管道
    • 命令参数过长
    • xargs将管道前面的内容一条条的交给后面命令处理
    • 一般会跟find使用
    -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的
    
    

    linux三剑客

    grep 文件过滤工具

    awk

    sed

    grep

    grep[option] '模式' file

    option

    --color=auto 对匹配到的行添加颜色
    -v      取反
    -i      不区分大小写
    -n      加行号
    -c      打印匹配到的行数
    -o      只显示匹配到的文字
    -q      静默模式
    echo $? 查看上一条命令结果,执行成功为0,不成功为非0.
    -A      # after   向下显示#号
    -B      # before  向上显示#号 
    -C      # context 上下分别显示#行
    -e      或者
    # 示例 grep -e 'user' -e 'root' passwd
    -E      扩展的正则表达式
    -F      不适用正则表达式
    -r      递归
    -w      匹配整个单词
    
    

    正则表达式元字符

    • 字符匹配

      • .任意单个字符
      • [ ]匹配指定范围内的任意单个字符 [0-9] [a-z]
      • [^ ] 取反
      • 正则表达式里的 + 和 ? 需要+/转译
      • [:upper:] 大写字母
      • [:lower:] 小写字母
      • [:alnum:] 数字和字母
      • [:alpha:] 大小写字母
      • [:digit:] 数字
      • [:blank:]空白
      • [:punct:]标点符号
    • 匹配次数

      • *表示任意次数
      • .*任意字符任意次数
      • ?表示0或者1次
      • +至少一次
      • {n}表示n次
      • {m,n}最少m次,最多n次
      • {n,}至少n次
      • {,n}至多n次
    • 位置锚定

      • ^开头
      • $结尾
      • ^$空行
      grep -v "^#" /etc/ssh/sshd_config |grep -v "^$" 显示不以#开头并且不是空行
      
      
    • 分组

      grep '(l..e).*1' tao
      # 向后引用
      
      
    • 向后引用

      • 1 前面第一组匹配的内容,匹配完成之后在后面再出现一次
      • 2 第二组
    • 扩展正则表达式

      • 与正则表达式的区别是不需要转译
      • grop -E

    压缩

    zip包可以直接解开(工作中交换最好发zip格式)

    gzip

    压缩文件

    gzip [option]...file
    # 压缩时默认删除原文件
    gzip -c filename > filename.gz
    # 保留原文件,将压缩结束输出到屏幕
    
    gzip -1 -c filename >filename.gz
    # 设置压缩比,压缩比从 1-9,默认为9
    -d 解压 
    gzip -d filename.gz
    
    zcat filename.gz 
    # 不解压的情况下查看压缩包内的内容,可以写入别的文件
    zcat filename.gz >>file
    

    解压文件

    gunzip [option]...file
    

    bzip2

    压缩文件

    bzip2[option]...file
    -k    # 保留原文件
    -d    # 解压文件
    -1-9  # 指定压缩比
    bzcat # 不解压情况下查看文件
    
    

    解压文件

    bunbunzip2 file
    
    

    xz

    压缩

    xz[option]..file
    -k     保留原来的文件
    -d     解压
    -1-9   指定压缩比
    xzcat  不解压查看
    
    

    解压

    unxz解压
    
    

    zip

    压缩

    zip[option]..file
    -k     保留原来的文件
    -d     解压
    -1-9   指定压缩比
    zcat  不解压查看
    
    

    解压

    zip    解压
    
    

    tar

    归档工具

    归档打包,默认不压缩
    tar[必要参数][选择参数][文件]
    tar cpvf etc.tar /etc
    c # 创建
    v # 显示过程
    f # 强制
    p # 把原来的属性也带过来
    r # 追加 这里追加和查询都要加 -f属性
    t # 查询
    tar xf # 解压
    tar -r -f etc.tar /etc
    tar xf etc.tar -C路径
    -z 使用gzip压缩
    -j 使用bzip2压缩
    -J 使用xz压缩
    --exclude  排除文件
    

    split分卷压缩

    # 只能指定文件
    split -b 2M 待拆分  etc.tar
    -b 指定大小 文件 (只能为文件)  切割以后的名字
    -d 指定后缀为数字
    -a 指定几位
    
    cat 切割后的文件 > 新文件
    cat etc.tar.gz00[1-9] >etc.tar.gz
    # 分卷之后的文件丢失其中一个都无法还原
    
  • 相关阅读:
    go开发常用工具
    go 组合取代继承
    go 的struct 跟map赋值不同
    Go进阶35:Go语言自定义自己的SSHServer harder
    Go进阶18:常用加密解密算法总结
    golang处理时区
    Go的定时器cron
    Docker Alpine 容器修改/etc/hosts 不生效的问题
    成为 Go 高手的 8 个 GitHub 开源项目
    C#知识点总结系列:3、C#中Delegate和Event以及它们的区别
  • 原文地址:https://www.cnblogs.com/taosiyu/p/11432954.html
Copyright © 2020-2023  润新知