Files

查找目錄中每個日期的最大文件

  • September 25, 2016

我有一個類似於以下的目錄:

-rw-r--r-- 1 root root 223K Apr 28 14:25 2015.04.28_14.25
-rw-r--r-- 1 root root 253K Apr 28 14:55 2015.04.28_14.55
-rw-r--r-- 1 root root 276K Apr 28 15:25 2015.04.28_15.25
-rw-r--r-- 1 root root 254K Apr 28 15:55 2015.04.28_15.55
-rw-r--r-- 1 root root 122K Apr 29 09:08 2015.04.29_09.08
-rw-r--r-- 1 root root 127K Apr 29 09:38 2015.04.29_09.38
-rw-r--r-- 1 root root  67K Apr 29 11:43 2015.04.29_11.43
-rw-r--r-- 1 root root 137K May 1 12:13 2015.04.29_12.13
-rw-r--r-- 1 root root 125K May 1  12:43 2015.04.29_12.43
-rw-r--r-- 1 root root 165K May 1 13:13 2015.04.29_13.13
-rw-r--r-- 1 root root 110K May 1 13:43 2015.04.29_13.43

我的問題是,如何從每個日期中找到最大的文件?

例如,從 4 月 28 日開始的最大文件、從 4 月 29 日、5 月 1 日開始的最大文件等。

作業系統資訊:Linux Kali 3.18.0-kali3-amd64 #1 SMP Debian 3.18.6-1 ~ kali2 (2015-03-02) x86_64 GNU / Linux

在 GNU/任何東西上,

ls -l --time-style=+%s \
| awk '{$6 = int($6/86400); print}' \
| sort -nk6,6 -nrk5,5 \
| sort -sunk6,6

這將為您提供 UTC 邊界,根據需要將您的本地時間偏移量添加到計算中,例如 int(($6-7*3600)/86400) 用於 -0700 午夜邊界。

基於stat獲取文件資訊並awk確定每個日期的最大值的方法:

stat -c $'%.10y\t%s\t%n' * |
 awk 'BEGIN { FS=OFS="\t" }
      s[$1]<$2 { s[$1]=$2 ; n[$1]=$3 }
      END { for (d in n) print d,s[d],n[d] | "sort" }'

輸出將是Tab(日期、大小、文件名)元組的單獨列表。

引用自:https://unix.stackexchange.com/questions/207317