Linux에서 du 명령 출력을 크기별로 정렬


크기에 따라 정렬된 출력과 함께 du 명령을 사용하는 방법을 알아보세요.

du 명령은 Linux에서 디렉터리와 파일이 사용하는 공간을 찾는 데 사용됩니다. 이는 가장 큰 크기와 가장 작은 크기를 갖는 파일과 디렉터리를 찾을 수 있음을 의미합니다.

그러나 기본적으로 du 명령을 사용하면 출력을 크기별로 정렬할 수 없습니다.

그렇다면 du 명령 출력을 크기별로 어떻게 정렬합니까? 단순한!

출력을 sort 명령으로 파이프합니다. 그리고 이 튜토리얼에서는 출력을 크기별로 정렬하는 방법에 대한 몇 가지 예를 공유하겠습니다.

du 명령 출력을 정렬하는 방법

앞서 언급했듯이 du 명령에는 출력을 정렬하는 기능이 내장되어 있지 않으므로 출력을 sort 명령으로 파이프해야 합니다.

가장 간단한 형태로 보면 다음과 같습니다.

du /path/to/directory | sort

그러나 보시다시피 출력은 사람이 읽을 수 없으며 표시할 항목 수를 제어할 수도 없습니다.

그리고 출력을 조정하기 위해 여러 플래그를 사용하는 개념이 있습니다.

예를 들어 위와 동일하지만 사람이 읽을 수 있는 형식으로 출력하려면 다음과 같이 -h 플래그를 사용할 수 있습니다.

du -h /path/to/directoy | sort -rh

du 명령과 함께 -r 플래그를 사용한 이유는 du 명령의 출력을 반전시켜 출력을 내림차순(가장 큰 파일에서 가장 작은 파일 순으로)으로 표시하기 위한 것입니다. ).

그리고 du 명령을 사용하여 수행할 수 있는 다른 작업을 보여 드리겠습니다.

1. 가장 큰 파일 상위 10개 찾기

이전에는 파일을 내림차순으로 정렬하는 방법을 설명했지만 이제 원하는 것은 가장 큰 파일 10개입니다.

이를 위해서는 처음 10줄을 제외한 출력을 잘라야 하며 이를 위해 head 명령에 파이프하겠습니다.

du -h /path/to/directory | sort -rh | head -n 10

2. 파일 검색 깊이 지정

모르시는 분들을 위해 말씀드리자면, 디렉터리 내부에 하위 디렉터리가 있으며 체인은 마지막 하위 디렉터리가 나타날 때까지 계속됩니다.

기본적으로 du 명령은 재귀 검색을 시작합니다. 즉, 마지막 하위 디렉터리가 나타날 때까지 검색하므로 이 동작을 원하지 않을 수 있습니다.

파일을 검색하려는 깊이를 지정하려면 --max-length 플래그를 사용할 수 있습니다.

예를 들어, 최대 깊이 2를 찾으려면 --max-length=2를 사용하고 구문은 다음과 같습니다.

du -h --max-depth=2 /path/to/directory | sort -rh

또는 --max-length 플래그를 사용하여 가장 큰 파일 10개를 찾으려면 다음 구문을 참조할 수 있습니다.

du -h --max-depth=2 /path/to/directory | sort -rh | head -n 10

3. 파일 형식을 기준으로 파일 정렬

이것은 흥미로운 것입니다. 파일을 몇 번이나 찾았지만 파일 이름을 기억하지 못하셨나요? 여러 번(적어도 나에게는 그런 일이 일어났습니다).

그러나 공통점 중 하나는 파일 형식을 알고 있다는 것입니다. 예를 들어 스크립트 이름을 잊어버렸을 수도 있지만 .sh 확장자는 확실합니다.

du 명령을 사용하면 파일을 정렬할 수 있어 관련성이 높아집니다.

파일 유형을 기반으로 하는 소프트 파일에 du 명령을 사용하려면 다음과 같이 디렉토리 경로 끝에 파일 유형을 추가하기만 하면 됩니다.

du -h /path/to/directory*.<File_extension> | sort -rh 

예를 들어 모든 .mkv 파일을 정렬하려면 다음을 사용합니다.

du -h ~/Downloads/*.mkv | sort -rh

4. 특정 파일 크기 범위 내에서 파일 정렬

특정 크기 범위 내에서 파일을 정렬하는 것은 파일을 정렬하는 가장 좋은 방법 중 하나입니다. 안타깝게도 sort 명령에는 이를 수행하는 내장 기능이 없습니다.

여기에서 검색을 시작하기 위한 최소 또는 최대 임계값을 선언함으로써 find 명령이 개입됩니다.

이 섹션에서는 다음과 같은 가능성을 안내해 드리겠습니다.

  • 주어진 크기보다 작은 파일 찾기

  • 지정된 크기보다 큰 파일 찾기

  • 주어진 범위(x보다 크고 y보다 작음) 내에서 파일을 찾습니다.

그럼 첫 번째부터 시작해 보겠습니다.

특정 크기보다 작은 파일 정렬

지정된 크기보다 작은 파일을 정렬하려면 다음과 같이 find 명령을 du 및 sort 명령과 결합해야 합니다.

find ~/Path/to/file -type f -size -<file_size> -exec du -h {} + | sort -rh

여기,

  • -type -f: 파일만 검색하겠다는 의미입니다.

  • size: 크기 매개변수를 기반으로 검색을 시작합니다.

  • -: 여기서 파일 크기 앞의 - 기호는 파일이 지정된 크기보다 작아야 함을 나타냅니다.

  • -exec du -h {}: 사람이 읽을 수 있는 플래그로 활성화된 du 명령을 실행합니다.

  • sort -rh: 사람이 읽을 수 있는 플래그(-h)와 함께 sort 명령을 역으로 사용합니다.

1GB 미만의 파일을 찾고 싶다면 다음을 사용하겠습니다.

find ~/THE_DU/ -type f -size -3G -exec du -h {} + | sort -rh

지정된 크기보다 큰 파일을 정렬합니다.

위 명령을 약간 변경하면 지정된 크기보다 큰 파일을 찾을 수 있습니다.

find ~/Path/to/file -type f -size +<file_size> -exec du -h {} + | sort -rh

보시다시피, 파일 크기 앞에 + 기호를 사용하기만 하면 주어진 범위보다 큰 파일을 정렬합니다.

예를 들어, 여기에서는 3GB보다 큰 파일을 정렬했습니다.

find ~/Downloads/ -type f -size +3G -exec du -h {} + | sort -rh

주어진 범위 내에서 파일 정렬

제목에서 짐작할 수 있듯이 여기서는 파일의 최소 및 최대 범위를 지정할 범위를 생성해야 합니다.

최소 범위를 지정하려면 -size -를 사용하고 최대 범위의 경우 -size +를 사용하여 구문을 다음과 같이 만듭니다.

find ~/Path/to/file -type f -size +<file_size> -size -<file_size> -exec du -h {} + | sort -rh

예를 들어, 3GB에서 5GB 사이의 파일을 정렬하려면 다음을 사용합니다.

find ~/Downloads/ -type f -size +3G -size -5G -exec du -h {} + | sort -rh

다음: du 명령에 대한 현대적인 대안

du 명령에 대한 현대적인 대안을 찾고 있거나 du 명령의 더 나은 버전을 원한다면 duf 명령을 사용해 보아야 합니다.

du와 df를 현대적이고 다채로운 출력과 결합한 것이며 Linux에서 duf 명령을 설치하고 사용하는 방법은 다음과 같습니다.

du 명령을 사용하여 파일을 쉽게 정렬할 수 있었으면 좋겠습니다.