UNIXの特定の場所にあるファイルの日付(30日単位)を更新するには?

UNIXの特定の場所にあるファイルの日付(30日単位)を更新するには?

UNIXの特定の場所にあるファイルの日付(30日単位)を更新するには? awkやsedが役に立ちますか?

ファイル形式は次のとおりです。

Thomson:xyz
形式:1
文字セット:ASCII8
ファイルタイプ:イベントファイル
ファイルサブタイプ:mobile_call
ファイルグループ番号:1
グループ内のファイル番号:1グループ内の総ファイル数
:19
ソースID:ソース
タグ:tag-v13

このファイルは GTFplaintext 0.1 によって生成されます。

Event: "61765","1","2014/01/03-13-00-00.00",,"GBP",,,,,,,,,,"61765","0345351816","1407",,,,,,,,,,,,,,,,,,,,,
Footer: text_data_transfer_file
AuditValue_1: 1
AuditValue_2: 0
End: text_data_transfer_file
Lines: 15
Characters: 351
Checksum:
Security_checksum:
End_of_file:

上記のファイルから「Event:」で始まる行に移動し、
「2014/01/03-13-00-00.00」の日付を30日まで更新する必要があります(時間が残っている間は日付のみを更新します)。同じです))。
ディレクトリには20,000個のファイルがあり、これらのファイルの日付を更新する必要があります。

ベストアンサー1

perlこのモジュールを使用すると、Date::Manip次のことができます。

 perl -MDate::Manip -pi -e 's|^Event.*?"\K\d{4}/\d\d/\d\d|
   UnixDate(DateCalc("$&", "30 days later"), "%Y/%m/%d")|e' file1 file2...

おすすめ記事