連続して最も古いファイルの年齢を見つける

連続して最も古いファイルの年齢を見つける

頑張った

stat -c %Y ./* 2>/dev/null | awk -v d="$(date +%s)" 'BEGIN {m=d} $0 < m {m = $0} END {print d - m}'

現在のディレクトリで最も古いファイルの年齢を見つけるには、この行を使用して秒単位の数値を取得します。

番号はどのように受け取りますか?その行に?ありがとう

答え1

私が正しく覚えている場合、このソリューションは複雑な構造を使用せず、最も古い年齢(日)も印刷する必要があります。

echo "$(( ($(date +%s) - $(stat -c %Y ./* | sort -n | head -n 1)) / 86400 )) days"

あなたの質問に答えるには、質問を完了して計算してください。

echo $(( $(stat -c %Y ./* 2>/dev/null | awk -v d="$(date +%s)" 'BEGIN {m=d} $0 < m {m = $0} END {print d - m}') /86400 ))

答え2

そして:perlzsh

$ ls -ld ./*(D-Om[1])
-rw-r--r-- 1 stephane stephane 205 Jan 11  2004 ./Y2K
$ perl -le 'print -M shift' ./*(D-Om[1])
5947.59262731482

ナノ秒精度のみを使用zsh(コンパイラ精度に制限double):

zmodload zsh/datetime zsh/stat
stat -F %s.%N -A t +mtime ./*(D-Om[1]) &&
  print $(((EPOCHREALTIME - t) / 24 / 60 / 60))

(参考にしてください。この場合、86400 Unixは2番目のデバイスです)

関連情報