Du - 인덱스 노드

Du - 인덱스 노드

시스템에서 모든 inode 사용량이 어디에 있는지 알아내기 위해 하위 디렉터리에 파일이 몇 개 있는지 확인하고 싶습니다. 공간 활용을 위해 이렇게 한 것 같아요.

du -sh /*

이렇게 하면 루트 디렉터리 외부의 디렉터리에서 사용되는 공간이 제공되지만 이 경우에는 크기가 아닌 파일 수가 필요합니다.

답변1

find . -maxdepth 1 -type d | while read -r dir
do printf "%s:\t" "$dir"; find "$dir" -type f | wc -l; done

보안/호환성 수정을 위해 Gilles와 xenoterracide에게 감사드립니다.

첫 번째 부분은 find . -maxdepth 1 -type d현재 작업 디렉터리의 모든 디렉터리 목록을 반환합니다. (경고: -maxdepthGNU 확장이며 GNU가 아닌 버전에는 없을 수도 있습니다  find.) 이것은 다음으로 파이프됩니다...

파트 2: ( while read -r dir; do 위에 표시된 while read -r dir(새 줄) do) 루프를 시작합니다 . 이 명령은 while들어오는 파이프가 열려 있는 동안 while(전체 디렉토리 목록이 전송될 때까지) read변수에 다음 줄을 넣습니다 dir. 그럼 계속...

파트 3: printf "%s:\t" "$dir"디렉토리 이름 중 하나를 포함하는 문자열이 인쇄되고 $dir 그 뒤에 콜론과 탭(개행은 아님)이 표시됩니다.

파트 4: find "$dir" -type f디렉토리에 이름이 지정된 모든 파일 목록입니다 $dir. 이 목록은 다음으로 전송됩니다...

파트 5: wc -l표준 입력으로 전송된 라인 수를 셉니다.

마지막 부분: done간단히 while루프를 종료합니다.

이렇게 하면 현재 디렉터리 아래의 모든 디렉터리 목록을 얻을 수 있습니다. 각 디렉토리에 대해 사용할 수 있도록 그 안에 있는 모든 파일의 목록을 생성합니다 wc -l. 결과는 다음과 같습니다.

./dir1: 234
./dir2: 11
./dir3: 2199
...

답변2

시도해 보세요 find . -type f | wc -l. 현재 디렉터리의 모든 파일과 하위 디렉터리의 모든 파일 수를 계산합니다. 모든 디렉터리는 파일로 간주되지 않으며 일반 파일만 포함됩니다.

답변3

다음은 몇 가지 유용한 목록 명령 모음입니다(이전 사용자 코드에서 다시 해시됨).

폴더 및 파일 수 나열:

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" -type f | wc -l); printf "%4d : %s\n" $n "$dir"; done

0이 아닌 파일이 있는 폴더를 나열합니다.

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" -type f | wc -l); if [ $n -gt 0 ]; then printf "%4d : %s\n" $n "$dir"; fi; done

하위 폴더 수와 함께 폴더 나열:

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" -type d | wc -l); let n--; printf "%4d : %s\n" $n "$dir"; done

하위 폴더 수가 0이 아닌 폴더 목록:

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" -type d | wc -l); let n--; if [ $n -gt 0 ]; then printf "%4d : %s\n" $n "$dir"; fi; done

빈 폴더를 나열합니다.

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" | wc -l); let n--; if [ $n -eq 0 ]; then printf "%4d : %s\n" $n "$dir"; fi; done

콘텐츠 개수와 함께 비어 있지 않은 폴더를 나열합니다.

find -maxdepth 1 -type d | sort | while read -r dir; do n=$(find "$dir" | wc -l); let n--; if [ $n -gt 0 ]; then printf "%4d : %s\n" $n "$dir"; fi; done

답변4

Du - 인덱스 노드

왜 (나를 포함하여) 아무도 다음 사항을 알지 못하는지 모르겠습니다.

du --inodes
--inodes
      list inode usage information instead of block usage

나는 이것이 OP의 문제를 해결한다고 확신합니다. 나는 내 거대한 드라이브에서 모든 정크가 어디에 있는지 알아내기 위해(그리고 그것을 오래된 디스크로 오프로드하기 위해) 그것을 많이 사용하기 시작했습니다.

추가 정보

재귀적(다른 경우에 유용할 수 있음)을 원하지 않는 경우 다음을 추가하십시오.

-S, --separate-dirs

관련 정보