Рассчитать общее потребление пространства конкретными файлами в Unix-терминале - PullRequest
5 голосов
/ 17 августа 2010

У меня есть папка с файлами .tcb и .tch. Мне нужно знать, каков размер всех файлов .tcb вместе, соответственно всех файлов .tch. Я сделал это так:

1) Я создал временную папку, а затем:

mv *tch temp

2) и затем:

du -sk temp

Я нашел команду в Интернете, и в википедии говорится: «du (сокращенно от использования диска) - это стандартная программа Unix, используемая для оценки использования файлового пространства». Я думаю, что причина, по которой он говорит, что это оценка, заключается в том, что если есть ссылки, то вместо ссылки будет показан размер ссылки.

Но если я сделаю

ls -l

во временной папке (которая содержит все * .tch) файлы, а затем суммируем размеры, которые отображаются в терминале, у меня есть другой размер файла. Почему это так?

В общем, мне нужна команда , которая показывает реальный файл размер * всех .tch файлов в папке, которая может содержат также другие типы файлов .

Я надеюсь, что кто-нибудь может мне помочь с этим. Большое спасибо!

Ответы [ 2 ]

10 голосов
/ 17 августа 2010

Вы можете использовать опцию -L для du, если хотите перейти по символическим ссылкам (то есть рассчитать размер цели ссылки, а не самой ссылки). Вы также можете использовать опцию -c для отображения итоговой суммы в конце.

Вооружившись этими опциями, попробуйте du -skLc *.tch.

Подробнее о du см. на этой man-странице .

1 голос
/ 17 августа 2010

Посмотрите на конкретную справочную страницу для вашей версии du, поскольку они значительно различаются в том, как они рассчитывают.

«Приблизительно» может быть из-за:

  1. Используемые блоки или используемые байты могут быть сообщены с блоками с завышенными размерами файлов, которые не являются точными коэффициентами, кратными размеру блока, но более точно представляют «использованное пространство, которое я не могу использовать для других материалов»
  2. Файлы Unix могут иметь «дыры», созданные путем поиска длинных путей и записи. ОС фактически не выделяет место для пропущенных дыр.
  3. Символические ссылки могут или не могут быть разыменованы к реальному файлу, на который они указывают.

Если вы просто хотите использовать byountount wc -c *.tcb

...