查找一行中最旧文件的年龄

查找一行中最旧文件的年龄

我试过

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 第二个单元)

相关内容