• Linux之find命令操作技巧


    一、前言

    工作中,我们常用find命令查找某些文件或者删除一些旧的日志文件,所以学会find命令的操作技巧就极为重要。

    二、find常用参数选项

    -depth                从指定目录下最深层的子目录开始查找
    -maxdepth levels            查找的最大目录级数,levels为自然数
    -regextype type                                      改变正则表达式的模式。默认为emacs,还有posix-awk、posix-basic、posix-egrep、posix-extended
    -mtime [-n|n|+n]                                      按照文件的修改时间来查找文件
                  n                                               n是距现在第n天
                 -n                                               表示文件更改时间距现在n天以内
                 +n                                              表示文件更改时间距现在n天以前
    -atime [-n|n|+n]                                       按照文件的访问时间来查找文件。单位为天
    -ctime [-n|n|+n]                                       按照文件的状态改变时间来查找文件。单位为天
    -amin                                                      按照文件的访问时间来查找文件。单位为分钟
    -cmin                                                      按照文件的状态改变时间来查找文件。单位为分钟
    -mmin                                                     按照文件的修改时间来查找文件。单位为分钟
    -group                                                     按照文件所属的组来查找文件
    -name                                                     按照文件名查找文件,值支持*、?、[]等特殊通配符
    -newer                                                    查找更改时间比指定文件新的文件
    -nogroup                                                查找没有有效用户组的文件
    -nouser                                                  查找没有有效属主的文件
    -path pattern                                          指定路径样式,配合-prune参数排除指定目录
    -perm                                                     按照文件权限来查找文件
    -regex                                                    接正则表达式
    -iregex                                                   接正则表达式,不区分大小写
    -size n[cwbkMG]                                   查找文件大小为n的文件,cwbkMG为文件度量单位
    -user                                                     按照文件的属主来查找文件
    -type [b|c|d|p|l|f|s|D]                              按文件类型查找文件
              b                                                 块设备文件
              c                                                 字符设备文件
              d                                                 目录
              p                                                 管道文件
              l                                                  符号链接文件
              f                                                  普通文件
             s                                                  socket文件
             D                                                 door
    -delete                                                 将查出的文件删除
    -exec                                                   对匹配的文件执行该参数所给出的shell命令
    -ok                                                       和-exec作用相同,但是执行每个命令之前,都会让用户先确认是否执行
    -prune                                                 使用这一选项可以使find命令不在当前指定的目录查找
    -print                                                   将匹配的文件输出到标准输出
    !                                                        取反
    -a                                                        取交集,全拼为and
    -o                                                        取并集,全拼为or

    三、find命令操作技巧

    1、模拟环境

    #生成七天以前的日志文件
    
    for n in $(seq 10)
    do
    date -s "2018/03/$n"
    touch /data/access_www_$(date +%F).log
    done
    touch /data/access_nginx_$(date +%F).log
    ntpdate ntp1.aliyun.com
    ls -l /data/
    View Code

    2、删除七天以前的日志文件但保留文件名称含有nginx字段的文件

    #方法一:
        find /data/ -type f ! -name "*nginx*" -mtime +7 |xargs rm -f
        ls /data/
    
    #方法二:
        find /data/ -type f ! -name "*nginx*" -mtime +7 -exec rm {} ;
        ls /data/
    
    #方法三:
        find /data/ -type f ! -name "*nginx*" -mtime +7 -delete
        ls /data/
    View Code

    3、把七天以前的文件移动到/tmp目录下

    #方法一:    
        find /data/ -type f -name "*.log" -mtime +7 |xargs -i mv {} /tmp
        ls /data/
        ls /tmp
    
    #方法二:
        mv `find /data/ -type f -name "*.log" -mtime +7` /tmp
        ls /data/
        ls /tmp
    
    #方法三:
        find /data/ -type f ! -name "*nginx*" -mtime +7 -exec mv {} /tmp ;
        ls /data/
        ls /tmp
    View Code
  • 相关阅读:
    某公司的软件测试笔试题,要是不看书,有的题目还真是不好答
    性能测试面试题总结(答案全)
    最简单实用的docker专题
    什么是LAMP和WAMP,一篇文章和你讲清楚
    版本管理工具Visual SourceSafe的超详细使用教程
    抓包工具Fidder详解(主要来抓取Android中app的请求)
    除了angular/vue/react的新轮子lit
    你可以在浏览器中直接运行 TypeScript 吗?
    Introducing the .NET Hot Reload experience for editing code at runtime
    vscode编辑器快捷方式
  • 原文地址:https://www.cnblogs.com/wutao666/p/9615244.html
Copyright © 2020-2023  润新知