最近作成されたファイルを電子メールで送信する

最近作成されたファイルを電子メールで送信する

24時間ごとにログファイルを電子メールで送信しようとしています。現在、私はこれを達成するためにmuttを使用しています。次のようにmuttを呼び出すことができます。

mutt -s "Log" -a file_attachment [email protected] 

findとmtimeを使用して最近生成されたファイルを一覧表示できることを知っていますが、ディレクトリ内の最後に生成されたファイルを見つけて電子メールの添付ファイルに送信するbash機能を定義できるようにしたいと思います。

どうすればいいですか?

ベストアンサー1

そしてzsh

mutt -s "Log" -a /path/to/*.log(.om[1]) [email protected]

その使用zsh グローバル予選。他のシェル glob は名前に基づいてのみファイル名を生成できますが、glob ではこれらの修飾子(上記zsh(.om[1])を使用してファイル属性(タイプ、サイズ、時間、権限...)または他の基準に基づいて選択してファイルに影響を与える可能性があります。さまざまなバリエーションや選択範囲を適用して順序を決めます。

この場合、次の修飾子を使用します。

  • .:一般ファイルのみを選択します。
  • om:修正時間順に並べ替え(最新順)
  • [1]:最初の項目のみを選択します。

logglobにファイルがないと、/path/toglobは失敗し、コマンドは中断されます(予想どおりですが、他のシェルは動作が異なります)。

GNUlyでは、これに対応する内容は次のとおりです。

latest=$(
  find /path/to -maxdepth 1 -name '*.log' -printf '%T@:%p\0' |
    sort -rzg | sed -z 's/^[^:]*://;q'
)
[ -n "$latest" ] &&
  mutt -s "Log" -a "$latest" [email protected]

おすすめ記事