1

ログファイルから最終更新日時を抽出し、その日時をファイルに添付する方法はありますか?

実行するたびにappslist.logファイルを生成するツールがあります。ツールを実行するときのスクリプトを通じて、applist.logファイルはすでに存在しているため、作成された日時と関連付ける必要がある場合があります。

好き:

mv applist.log applist_+%Y%m%d_%H%M%S.log

ツールを初めて実行してapplist.logを生成したとしましょう。

applist.log     Mon 03-29-2013

次回、2013年3月30日にツールを実行するときに、既存のapplist.logファイルを、作成された日時を含む新しい名前で移動したいと思います。

like applist_03-29-2013.log

ツールは2013年3月30日にapplist.logを再度生成するためです。

4

2 に答える 2

1
mv applist.log applist_`date -r applist.log +%Y%m%d%H%M%S`.log

これにより、名前に日付が含まれる新しいファイルにファイルが移動します。dateコマンドを使用すると、任意の形式で表示できます。man dateこれらの文字シーケンスの詳細については、を参照してください。バックティックを使用すると、最初に内部でコマンドが実行されます。日付の-rオプションは、問題のファイルの日付を取得します。

例:

[me@host temp]$ mv applist.log applist_`date -r applist.log +%Y%m%d%H%M%S`.log
[me@host temp]$ ls -l
total 196
-rw-rw-r--. 1 me me     0 Mar 25 20:55 applist_20130325205532.log

あなたのプログラムはcronであり、1秒間に1回しか実行されないと思います。

于 2013-03-26T00:55:08.947 に答える
1

ファイルの作成時間を取得することは、使用しているファイルシステムによって異なります。
すべてのファイルシステムがファイル作成時間の取得をサポートしているわけではありません。試す:

stat --format=%w applist.log

'-'が1つだけ表示される場合、ファイルシステムは作成時間を報告しません。それ以外の場合は、時刻を出力します。

この方法で作成時間を取得した場合は、以下を使用して移動できます。

fileName="applist.log"  
creationTimeEpoch="$(stat --format=%W "${fileName}")"  
creationTime="$(date +%Y%m%d_%H%M%S --date="@${creationTimeEpoch}")"  
mv -i "${fileName}" "${fileName%.log}_${creationTime}.log"  

そうでない場合は、ファイルの変更時刻を使用できます。

fileName="applist.log"  
modificationTime="$(date +%Y%m%d_%H%M%S --reference="${fileName}")"  
mv -i "${fileName}" "${fileName%.log}_${modificationTime}.log"  
于 2013-03-26T01:10:14.297 に答える