다음과 유사한 디렉토리가 있습니다.
-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
답변1
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 자정 경계를 의미합니다.
답변2
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
출력은 (날짜, 크기, 파일 이름) 튜플의 별도 목록 입니다 .
답변3
"ls"를 사용하여 파일을 크기 순서로 가져온 다음 결과를 제한하여 가장 큰 결과를 얻는 스크립트를 작성합니다.
예를 들어 "ls -lS 2015.04.29*"를 실행하면 크기가 작은 순서대로 파일 목록이 표시됩니다. 또는 'ls -lS 2015.04.29*|head -1'을 입력하면 최대값을 얻을 수 있습니다.
원하는 경우 거기에서 파일 이름 등만 제거할 수 있습니다(또한 파일 이름에 있는 모든 날짜를 반복하여 모든 날짜 중 가장 큰 날짜를 얻는 등). 기본적으로 날짜를 기반으로 한 for 루프와 각 날짜의 최대값을 얻기 위한 ls 명령입니다.