`Du /` перечисляет каждый отдельный файл в системе?

443
tjt263

Есть ли du /список всех файлов?
||
Есть ли способ лучше?

-3
Лучший способ сделать что? Daniel B 7 лет назад 2
Лучший способ * перечислить * *** каждый файл .. *** tjt263 7 лет назад 0
Каждый отдельный файл в системе? Неа. Каждый отдельный файл на всех смонтированных файловых системах? Возможно ... Хотя между этими двумя вещами может быть мало существенных различий, в других системах это различие может быть особенно значительным (и стоит упомянуть, чтобы другие данные не были пропущены / забыты). TOOGAM 7 лет назад 0
Не размещайте один и тот же вопрос на нескольких сайтах StackExchange. Http://unix.stackexchange.com/q/303635/133107. techraf 7 лет назад 0
Я голосую, чтобы закрыть этот вопрос, потому что он был опубликован на http://unix.stackexchange.com/q/303635/133107. Пожалуйста, прочитайте [Допускается ли перекрестная публикация вопроса на нескольких сайтах Stack Exchange, если вопрос является тематическим для каждого сайта?] (Http://meta.stackexchange.com/questions/64068/). Mokubai 7 лет назад 0

1 ответ на вопрос

2
Kamil Maciorowski

Есть ли du /список всех файлов?

От man du:

Суммируйте использование каждого диска FILEрекурсивно для каталогов.

Я интерпретирую это как: да, du /перечисляет каждый отдельный файл в /. Там могут быть некоторые подводные камни, которые я не знаю, хотя.

Это будет список файлов, если они приведены в качестве аргументов. Потому /что это каталог, du /список каталогов; файлы учитываются при расчете размеров их соответствующих каталогов; в этом случае они не перечислены.


findэто стандартный инструмент для вывода списка файлов. Чтобы перечислить каждый вызов файла:

sudo find / -type f 

где -type fговорит инструменту перечислять только обычные файлы. Таким образом, вы получите свой вывод без размеров (по сравнению с duвыводом); это хорошо, если вы хотите только перечислить файлы.


В общем случае findполезно, потому что вы можете указать несколько критериев для него (следующий список не является исчерпывающим):

  • должны ли результаты включать обычные файлы, каталоги, именованные каналы,… ( -typeопция);
  • по CTime, Atime, время изменения ;
  • владельцем;
  • по разрешениям;
  • по размеру.

Я думаю, вам нужно иметь список файлов, чтобы что-то сделать с ним. Вы можете использовать пути, предоставленные findв канале, указать его вывод ( -fprintопция) или выполнить команду для каждого найденного файла ( -exec). Есть также опции (например -print0), разработанные, чтобы избежать проблем с некоторыми проблемными символами в именах файлов.

Обратитесь к man findдля получения дополнительной информации.

Это похоже на хороший ответ ... на третий вопрос. (Не обращая внимания на первые два вопроса, которые в основном совпадают, включая вопрос в заголовке.) TOOGAM 7 лет назад 0
@TOOGAM Это потому, что мне показалось, что OP предположил, что `du` является хорошим решением для реальной проблемы ([проблема XY] (http://meta.stackexchange.com/a/66378)?). Я могу ошибаться в случае с OP, но будущие пользователи, которые ищут «список каждого файла», должны найти «find», а не «du». Kamil Maciorowski 7 лет назад 0
@TOOGAM Я расширил свой ответ. Спасибо за ваше замечание. Kamil Maciorowski 7 лет назад 0
Просто запустил du на экземпляре Ubuntu и показал только каталоги. 16.04 на AWS. Но опять же, это были мягкие ссылки, созданные с использованием `ln -s`, что может быть важным различием. `find` возвращает это. AER 6 лет назад 0
@ AER Спасибо. Мой ответ сейчас исправлен. Kamil Maciorowski 6 лет назад 0

Похожие вопросы