저는 Debian 서버에서 작업 중이며 sudo 없이는 콘솔에만 액세스할 수 있습니다. "Applications"라는 기본 폴더에는 내가 가지고 있는 모든 프로젝트가 포함된 하위 폴더가 포함되어 있습니다.
하지만 관리자 패널을 통해 새 프로젝트를 생성할 때 폴더 이름은 의미 없는 문자열이므로 새 폴더에 대한 심볼릭 링크를 생성하여 이름을 바꿀 수 있습니다.
예를 들어, 애플리케이션 폴더는 다음과 같습니다.
applications/
abuwryjbrb
evharjqgxj
MyCustomProjectName1
MyCustomProjectName2
각 애플리케이션이 얼마나 많은 공간을 사용하고 있는지 확인하고 싶습니다. 나는 Unix에 대한 경험이 많지 않기 때문에 그것을 구글링하여 du -sh *
.
그러나 출력은 다음과 같습니다.
91M abuwryjbrb
201M evharjqgxj
0 MyCustomProjectName1
0 MyCustomProjectName2
그러다 보니 이름을 하나하나 확인하고 어느 폴더가 어느 폴더인지 확인해야 하는데 시간이 너무 많이 걸립니다.
심볼릭 링크의 디스크 사용량을 출력하는 방법이 있습니까?
대신 du -sh -L *
원본 폴더와 심볼릭 링크의 중복 폴더를 얻지 못하고 다음과 같이 혼합된 출력을 얻습니다.
91M abuwryjbrb
201M MyCustomProjectName1
이러한 폴더 중 일부에는 원래 이름이 있고 일부에는 심볼릭 링크 이름이 있습니다.
답변1
-L
플래그와 du
명령을 사용하여 기호 링크를 사용할 수 있습니다 . du -sh -L *
당신을 도와야합니다.
답변2
du -sh -l -- */
후행 슬래시는 디렉토리와 디렉토리에 대한 기호 링크의 와일드카드 일치를 활성화합니다. 디렉토리에 대한 심볼릭 링크의 경우 이 명령은 대상에서 작동합니다.
-l
(GNU 확장자 등 -h
) du
특정 파일/디렉토리에 대한 디스크 사용량이 한 번만 계산되는 비활성화된 동작입니다. 각 프로젝트 내에 하드 링크가 존재하는 경우 보고된 디스크 사용량에도 영향을 미칩니다.
프로젝트는 각 디렉터리에 대해 한 번씩, 심볼릭 링크에 대해 한 번씩, 두 번 나열됩니다. 자신의 이름에만 일치하는 와일드카드 패턴을 만드는 쉬운 방법이 있다면 이 문제를 피할 수 있습니다. 예를 들어, 이름을 항상 대문자로 쓰고 자동 이름이 항상 소문자인 경우 다음을 사용할 수 있습니다.
du -sh [[:upper:]]*/
또는 다음을 사용할 수 있습니다.
du -shHl -- *
여기에는 일반 파일도 나열됩니다. 이 옵션 -H
( -D
GNU에서는 표준 옵션 du
이라고도 함 ) 은 명령줄에 전달된 기호 링크를 역참조하도록 -H
지시합니다 . du
각 디렉토리 트리 내의 기호 링크는 통과되지 않습니다( -L
여기서는 좋은 생각이 아닌 과 달리).
zsh에서는 사용할 수 있습니다
du -shH -- *(@-/)
디렉토리에 대한 기호 링크에서만 작동하거나 du -shH -- *(@)
대상에 관계없이 기호 링크에서만 작동합니다. 이번에는 -l
동일한 디렉터리에 대한 여러 개의 심볼릭 링크가 없으면 생략할 수 있습니다.
모든 셸에서(그리고 GNU 사용 find
) 다음을 사용할 수 있습니다.
find . -maxdepth 1 -type l -xtype d -exec du -shH {} +
디렉토리에 대한 심볼릭 링크에서만 작동합니다.