• shell批量以日期重命名文件


    在很多服务日志的情况下,或者有很多零散的文件要批量整理到一起时,通过shell脚本能很快解决:

    DATE=$(date +%Y_%m_%d-%H%M%S); find * -type f | while read file; do mv $file ${file}.${DATE}; done
    

    以上语句能快速找出目录下所有文件,并重命名。 

    那么如果要找出指定后缀的文件,并重命名该如何操作呢?为了更好的理解,下面来把代码分开执行:

    find ./log -name "*.log" | while read file
    do
    DATE=$(date +%Y%m%d_%H%M%S_%N)
    mv $file ./temp_log/${DATE}.log
    done

    第一行语句:找出当前log目录下的所有以*.log为后缀的文件。

    第三行语句:把当前时间变量导入DATE变量(产生一个随机数)。

    第四行语句:移动并重命名查找到的文件。

    下面再解释一下date变量:

    %Y 年份

    %m 月份

    %d 日期

    %H 小时

    %M 分钟

    %S 秒

    %s 获得时间戳,当前到:1970-01-01 00:00:00 相隔的秒数

    %N 获得当前时间的纳秒数据,精确到亿分之一秒

    所以,我们可以看出DATE=$(date +%Y%m%d_%H%M%S_%N)变量输出的基本上算是一个随机数,因为在CPU执行时%N很难出现相同结果。如此一来,在重命名的时候就不会产生文件覆盖的情况。

    关于随机数的产生还有一个系统变量$RANDOM:

    比如在终端输入:echo $RANDOM

    返回值为:26885

    我们还可以为它进行md5加密:echo $RANDOM|md5sum

    返回值:5ebc600b4d19e86719a491d7dd365880

  • 相关阅读:
    gitlab + gitlab-runner 实现项目的自动化部署测试环境与打包
    docker 部署 zookeeper 集群
    CSS 使用id属性的规则
    SimpleXML使用详解
    PHP通用分页类
    MYSQL远程连接速度慢的解决方法
    远程连接mysql出现1045错误的解决办法
    Bootstrap 元素居中设置
    PHP 时间戳
    html代码/如何做到有横线无竖线的表格/或横线有颜色/竖线没颜色
  • 原文地址:https://www.cnblogs.com/inteliot/p/2622347.html
Copyright © 2020-2023  润新知