0

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

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

4

1 回答 1

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/末尾附加时间戳的位置。

于 2012-10-30T09:19:36.543 回答