0

/home/user/ingest/さまざまなサイズのファイルが多数含まれるディレクトリがあります。このフォルダー内のすべてのファイルを/home/user/ingest/inbox2 分ごとに移動する必要があります。最初のファイルが に移動するのに 2 分以上かかる場合があります/home/user/ingest/inbox。その場合、2 番目のファイルを移動するときに、最初のファイルも取得すべきではありません。そのため、移動時にファイルの名前にタイムスタンプを追加することを考えました。シェルスクリプトでこれを行う方法はありますか?

また、crontab を使用すると、シェル スクリプトの実行を 2 分ごとにスケジュール設定するのに役立つことも理解しています。私はcronの基本的な考え方を持っていますが、私の特定の要件のために、ファイルが2分ごとに愛されているかどうかを確認するにはどうすればよいですか?

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 に答える