【问题标题】:How to append the timestamp of a process to the name of a file in Unix如何将进程的时间戳附加到 Unix 中的文件名
【发布时间】:2012-10-30 20:53:45
【问题描述】:

我有一个目录/home/user/ingest/,里面有很多大小不一的文件。我需要每两分钟将这个文件夹中的每个文件移动到/home/user/ingest/inbox。在某些情况下,第一个文件可能需要超过 2 分钟才能移入 /home/user/ingest/inbox。在这种情况下,当它移动第二个文件时,它不应该也拿第一个文件。这就是为什么我想在移动时将时间戳附加到文件名的原因。无论如何在shell脚本中这样做?

而且我还知道使用 crontab 可能有助于我安排每两分钟执行一次 shell 脚本。我对 cron 有一个基本的了解,但是对于我的特殊要求,我如何检查文件是否每两分钟被爱一次?

【问题讨论】:

    标签: bash unix mv


    【解决方案1】:

    你可以用这个 bash 脚本来做到这一点:

    #!/bin/bash
    
    TIMESTAMP=$(date +%s)
    
    for f in /home/user/ingest/*
    do
       if [ -f "$f" ]; then
          name=$(basename "$f")
          mv $f /home/user/ingest/inbox/${name}_${TIMESTAMP}
       fi
    done
    

    ${TIMESTAMP} 是自纪元(1970 年 1 月)以来的秒数。 for 循环遍历/home/user/ingest/ 目录中的所有内容,if 语句检查文件是否为常规文件(不是目录,不是符号链接),然后将文件移动到@ 987654324@ 末尾附加时间戳。

    【讨论】:

    • 非常感谢您的帮助!干得漂亮!
    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 2013-04-23
    • 2018-07-23
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多