Это просто потому, что переход от имен файлов к номерам инодов труден в пространстве пользователя, и вы не можете читать иноды оттуда?
3 ответа
Реализация du(1) в GNU coreutils будет поддерживать опцию --inodes со следующим выпуском (> 8.21) ... Я только что выпустил патч для Git (http://git.sv.gnu.org/cgit/coreutils.git/commit/?id=333dc83d). См. Http://lists.gnu.org/archive/html/coreutils/2013-07/msg00087.html.
Это не даст точного ответа - в частности, оно приравнивает записи каталога к файлам и, таким образом, дважды учитывает жесткие ссылки, а также имеет проблемы с переводами строк в именах файлов / каталогов - но, вероятно, "достаточно хорошо" для большинства целей:
find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -n
Это сортирует по количеству инодов (sic). если вы хотите традиционный порядок сортировки по каталогу:
find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -k2
Чаще всего я хочу что-то подобное, когда на диске заканчиваются inode, и я хочу знать, где они используются. Для этой цели некоторые незначительные неточности обычно не имеют большого значения.
Должна быть возможность использовать «find -ls» и анализировать номера инодов в листинге, чтобы исключить дубликаты, если вы хотите что-то более точное.
Используйте df
, а не du
!
du
означает "использование диска". Это df
означает "диск свободен" и будет проверять правильность файловой системы. Включая использование инода с опцией -i
!
В противном случае просто сделайте:
find thedirectory -exec ls -di {} \;|awk '{print $1}'|sort|uniq|wc -c
или похожие