特定のディレクトリで最も古いファイルの古さを検索するか、このディレクトリにファイルがない場合は0を返します。また、それを行う1行のコマンドが必要です。これまでのところ、これはディレクトリ内の最も古いファイルの経過時間を秒単位で見つけるための私のコマンドです:
expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))
問題は、ファイルがない場合、次のエラーが返されることです。
$ expr $(($(date +%s) - $(stat -c %Y $(ls -lt /path/to/dir/ | tail -1 | awk '{print $NF}'))))
stat: cannot stat ‘0’: No such file or directory
-bash: 1554373460 - : syntax error: operand expected (error token is "- ")
したがって、この場合、コマンドが0だけを返し、エラーの出力を抑制したいのです。
承認された回答:
1行にする必要がある場合:
stat -c %Y ./* 2>/dev/null | awk -v d="$(date +%s)" 'BEGIN {m=d} $0 < m {m = $0} END {print d - m}'
-
stat -c %Y ./* 2>/dev/null
エラーを無視して、すべてのファイルのタイムスタンプを出力します(したがって、ファイルがないと出力されません) -
awkを使用する場合:
-
-v d="$(date +%s)"
現在のタイムスタンプを変数d
に保存します -
BEGIN {m=d}
m
を初期化しますd
へ -
$0 < m {m = $0}
m
で最小値を追跡する -
END {print d - m}
違いを印刷します。
-