如何将进程的时间戳附加到Unix中的文件名

时间:2012-10-30 09:06:05

标签: bash unix mv

我有一个目录/home/user/ingest/,其中包含许多不同大小的文件。我需要每两分钟将此文件夹中的每个文件移动到/home/user/ingest/inbox。可能存在第一个文件可能需要超过2分钟才能进入/home/user/ingest/inbox的情况。在这种情况下,当它移动第二个文件时,它也不应该采取第一个文件。这就是为什么我想在移动时将时间戳附加到文件名的原因。反正在shell脚本中有没有这样做?

我也明白使用crontab可以帮助我每两分钟安排一次shell脚本的执行。我对cron有一个基本的想法,但根据我的特殊要求,我如何检查文件是否每两分钟被爱一次?

1 个答案:

答案 0 :(得分:3)

您可以使用此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语句检查文件是否是常规文件(不是目录,而不是符号链接),然后文件被移动到/home/user/ingest/inbox/,并在末尾附加时间戳。