Files
查找目錄中每個日期的最大文件
我有一個類似於以下的目錄:
-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
(日期、大小、文件名)元組的單獨列表。