2009-06-30 4 views
0

私は、カスタムレポートディレクトリを見て、それを見ているデータファイルとともに作業フォルダにコピーし、レポートを実行し、新しく作成したファイルを圧縮し、別のサーバにアップロードするスクリプトを書いています。新しいファイルだけを圧縮してBashスクリプトでレポートを実行する方法は?

私が問題になっているのは、新しく作成されたファイルがどのように呼び出されるか(ファイル拡張子)はわかりません。私は、新しく作成されたファイルが(レポートが実行される前と比較されたときと比べて)何を圧縮したり見つけ出しているのか疑問に思っていました。

私はタイムスタンプを見て、どこかで最新のファイルを移動するだけですが、実行されているレポートによって、複数のファイルが異なる時間に作成される可能性があります(電話レポートファイル、レポートファイル)。

私はこれをどのように達成することができますか?

+0

あなたはどのように多くのファイルがあるだろう知っていますか? – Tynan

+0

Nope。私は出力されるファイルについて何も知らない。 (名前、サイズ、ファイル数など) –

答えて

2

同様のアイデア:

touch report_start 
./run_report 
find $working_dir -type f -newer report_start | tar czf $archive 
rm report_start 
+0

は、ツールの1つの狂ったスイス軍の獣です。新しいパラメータについては考えていませんでした。ありがとう! – seth

+0

うわー、私は見つけることを知らなかった。ありがとう、私は本当にそれを感謝します。 :) –

+0

うーん、私はこれがうまくいくと思った。何らかの理由で、タッチされたファイルが作成されたファイルよりも古いとは見えません。私はそこに睡眠カウンターを置いた。それは秒未満であればタイムスタンプは同じように見えるが、それもうまくいかなかったからだと思った。今はすべてのファイルを以前の日付に戻してそれが動作するかどうかを調べるつもりですが、これで解決するかどうかわかりません。 –

1

あなたが何か行うことができるはず:彼らはあなたがレポートを実行する前に作成したファイルよりも新しい場合見て、ディレクトリ内のすべてのファイルをループして、tarballを作る

touch report_start 
./run_report 
for i in `ls -Rt`; do 
    echo $i | grep report_start 
    if [ $? -eq 0 ]; then 
     break  
    fi 
    cp $i reports 
done 
rm reports/report_start 
tar xvzf reports.tar.gz reports 
rm report_start 

を結果のTynanさんと

+0

lsを解析しないでください:http://mywiki.wooledge.org/ParsingLs - 「for i in *」を実行できます。再帰が必要な場合はfindを使用してください。あなたはreport/report_startをrmする必要はありません。なぜなら、それは-nt自身ではなく、コピーされないからです。 –

+0

ええ、忘れてしまったのは、findで新しいものを忘れてしまったことです。時間によって並べ替える唯一の方法は-tとなると思いました。 – Tynan

関連する問題