나는 이전 결과를 정렬하는 방법 을 조사해 du
보았는데 .sort
du | sort
이는 대부분의 용도에 적합하지만 특히 하드링크가 있는 여러 디렉토리를 나열하는 경우에는 도움이 되지 않습니다. 예를 들어 증분 백업이 있습니다.
하드 링크를 두 번 계산 하면 du
내용은 다음과 같습니다.
# du -hl --max-depth 1 /backup/saturn/ | sort -k 2
3.2G /backup/saturn/
456M /backup/saturn/2017-05-19
458M /backup/saturn/2017-05-20
461M /backup/saturn/2017-05-21
464M /backup/saturn/2017-05-22
462M /backup/saturn/2017-05-23
462M /backup/saturn/2017-05-24
465M /backup/saturn/2017-05-25
그러나 각 날짜가 지정된 디렉토리는 다른 디렉토리의 파일에 대한 많은 하드 링크를 공유하기 때문에 이러한 결과는 사실이 아닙니다.... 증분 백업입니다.
그러나 더 의미 있는 결과는 다음과 같습니다.
# du -h --max-depth 1 /backup/saturn/ | sort -k 2
666M /backup/saturn/
29M /backup/saturn/2017-05-19
53M /backup/saturn/2017-05-20
25M /backup/saturn/2017-05-21
40M /backup/saturn/2017-05-22
462M /backup/saturn/2017-05-23
14M /backup/saturn/2017-05-24
46M /backup/saturn/2017-05-25
이는 임의의 순서로 디렉토리를 평가하여 한 날짜에서 다음 날짜까지 얼마나 많이 변경되었는지에 대해 훨씬 덜 의미 있는 정보를 제공하기 때문에 약간 무의미합니다.
그래서 저는 디렉토리를 평가하는 순서를 제어하는 방법을 찾고 있습니다 du
.
답변1
확장 중리지의 코멘트의 최신 버전에서는 옵션 du
을 사용하여 검사할 파일 목록을 읽을 수 있으므로 --files0-from
다음을 수행할 수 있습니다.
printf "%s\0" /backup/saturn/*/ | sort -z | du --files0-from=- -h --total
예를 들어:
$ du -hxd1 foo
111M foo/2017-05-20
4.0K foo/2017-05-19
4.0K foo/2017-05-30
111M foo
그리고:
$ printf "%s\0" foo/*/ | sort -z | du --files0-from=- -h --total
101M foo/2017-05-19/
11M foo/2017-05-20/
4.0K foo/2017-05-30/
111M total
find
glob할 파일이 너무 많은 경우 사용할 수 있지만 printf
약간 장황합니다.
$ find foo -mindepth 1 -maxdepth 1 -type d -print0 | sort -z | du --files0-from=- -h --total
101M foo/2017-05-19
11M foo/2017-05-20
4.0K foo/2017-05-30
111M total