시스템에서 모든 inode 사용이 어디에 있는지 알아 내기 위해 하위 디렉터리에 얼마나 많은 파일이 있는지 확인하고 싶습니다. 내가 공간 사용을 위해 이것을하는 것과 같은 종류
du -sh /*
이것은 루트의 디렉토리에서 사용되는 공간을 제공하지만이 경우에는 크기가 아닌 파일 수를 원합니다.
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
현재 작업 디렉토리의 모든 디렉토리 목록을 반환합니다. (경고 : -maxdepth
은 GNU 확장이며 GNU가 아닌 버전에는 없을 수 있습니다 find
.) 이것은 다음으로 파이프됩니다.
두 번째 부분 : while read -r dir; do
(위에 while read -r dir
(newline)로 표시됨 do
) while
루프를 시작합니다 .-로 들어오는 파이프 while
가 열려있는 한 (전체 디렉토리 목록이 전송 될 때까지) read
명령은 다음 줄을 변수에 배치합니다 dir
. 그럼 계속 ...
세 번째 부분 : (디렉토리 이름 중 하나를 포함 printf "%s:\t" "$dir"
하는) 문자열 $dir
과 콜론과 탭 (개행은 아님)을 인쇄합니다.
네 번째 부분 : find "$dir" -type f
이름이있는 디렉토리 내의 모든 파일 목록을 만듭니다 $dir
. 이 목록을 보낸 사람 ...
다섯 번째 부분 : wc -l
표준 입력으로 전송되는 라인 수를 계산합니다.
마지막 부분 : done
단순히 while
루프 를 종료합니다 .
따라서 현재 디렉토리의 모든 디렉토리 목록을 얻습니다. 각 디렉토리에 대해 모든 파일의 목록을 생성하여 wc -l
. 결과는 다음과 같습니다.
./dir1: 234
./dir2: 11
./dir3: 2199
...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다