Bash
通過電子郵件發送最近創建的文件
我正在嘗試每 24 小時左右通過電子郵件發送一個日誌文件。目前我正在為此使用 mutt。你可以這樣呼叫 mutt:
mutt -s "Log" -a file_attachment example@example.com
我知道我可以使用 find 和 mtime 列出最近創建的文件,但我希望能夠定義一個 bash 函式,該函式將在目錄中查找最近創建的文件,然後將其作為電子郵件附件發送。
我怎樣才能做到這一點?
與
zsh
:mutt -s "Log" -a /path/to/*.log(.om[1]) example@example.com
這使用
zsh
glob 限定符。雖然其他 shell glob 只能根據其名稱生成文件名,但在 中zsh
,您可以使用這些限定符((.om[1])
如上),根據文件屬性(類型、大小、時間、權限…)或您自己的其他標准進行選擇,影響順序,應用各種轉換,或選擇一個範圍。在這種情況下,我們使用這些限定符:
.
: 只選擇正常文件。om
:按修改時間排序(最新的在前)[1]
: 只選擇第一個。請注意,如果 中沒有
log
文件/path/to
,則 glob 將失敗並且命令將被中止(如您所料,但其他 shell 的工作方式不同)。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" example@example.com