파일 시스템에 몇 개의 파일이 있는지 알고 싶습니다. 나는 이런 식으로 할 수 있다는 것을 안다.
find / -type f | wc -l
이것은 매우 비효율적입니다. 내가 정말로 원하는 것은 ‘파일’로 간주되는 고유 한 inode의 총 수를 찾는 것입니다.
더 좋은 방법이 있습니까?
노트 :
파일 동기화 프로그램을 개발 중이기 때문에이 작업을 수행하고 싶습니다. 통계 사용자가 총 파일 수와 시스템의 파일 수와 같은 통계 분석을하고 싶습니다. 그러나 나는 그 파일에 대해 아무것도 알 필요가 없으며 파일이 존재한다는 것만 (경로는 중요하지 않습니다) 마운트 된 각 파일 시스템 (및 관련 마운트 지점)에 대해이 정보를 알고 싶습니다.
답변
–inodes 옵션 df
은 사용하도록 예약 된 inode 수를 알려줍니다. 예를 들면 다음과 같습니다.
$ df --inodes / /home
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 3981312 641704 3339608 17% /
/dev/sda8 30588928 332207 30256721 2% /home
$ sudo find / -xdev -print | wc -l
642070
$ sudo find /home -print | wc -l
332158
$ sudo find /home -type f -print | wc -l
284204
공지 사항에서 반환 된 항목 수가 있다는 find
보다 클 IUsed
루트 (/) 파일 시스템에 대한,하지만 적은 / 가정이다. 그러나 둘 다 0.0005 % 이내입니다. 불일치의 이유는 하드 링크 및 유사한 상황 때문입니다.
디렉토리, 심볼릭 링크, UNIX 도메인 소켓 및 명명 된 파이프는 파일 시스템과 관련하여 모두 ‘파일’입니다. 따라서 find -type f
통계적 관점에서 플래그를 사용하는 것은 매우 부정확합니다.