du -hs .[!.]* 실행 중 오류 발생

du -hs .[!.]* 실행 중 오류 발생

숨겨진 디렉터리를 포함한 모든 디렉터리의 크기를 보고 싶습니다. 내가 만난 명령 중 하나는 다음과 같습니다. du -hs .[!.]*

하지만 오류가 발생합니다.

du: cannot access ‘.[!.]*’: No such file or directory

내가 뭘 잘못하고 있는지 알 수 없습니다.

답변1

나타나는 오류는 현재 디렉터리에 숨겨진 파일이나 디렉터리가 없음을 의미합니다. .[!.]*이름이 "."로 시작하는 모든 파일 또는 디렉터리와 일치하도록 확장됩니다. "."을 제외한 모든 항목이 뒤따르며, 일치하는 항목이 없으면 기본적으로 그대로 유지됩니다. 따라서 귀하의 경우 durun은 .[!.]*실제 파일이나 디렉터리 이름을 인수로 사용하고 현재 보고 있는 오류 메시지를 생성합니다.

nullglob여기에서 셸 동작 변경을 활성화 할 수 있습니다 .

shopt -s nullglob

그런 다음 셸은 일치하지 않는 패턴을 제거하고, du일치하지 않는 경우 현재 디렉터리의 사용량을 보고합니다(인수 없는 기본 동작).

Bash에서 원하는 것을 달성하려면 다음을 수행해야 합니다.

du -sh .[!.]*/ */

이는 숨겨진 디렉터리를 포함하여 현재 디렉터리의 모든 디렉터리로 확장됩니다. 활성화하지 않으면 nullglob오류 메시지가 계속 표시되지만 일치하는 디렉터리의 크기가 표시됩니다.

답변2

다음 명령을 원하는 것 같습니다.

du -hsc --exclude "./.*" */ | sort -h

관련 정보