zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    68
    56
    Django manager 命令笔记
    Django 执行 manage 命令方式
    Django 连接 Mysql (8.0.16) 失败
    Python django 安装 mysqlclient 失败
    H.264 SODB RBSP EBSP的区别
    FFmpeg—— Bitstream Filters 作用
    MySQL 远程连接问题 (Windows Server)
    MySQL 笔记
  • 原文地址:https://www.cnblogs.com/wutao666/p/9615244.html
Copyright © 2011-2022 走看看