Показать удобочитаемые размеры файлов в терминале OSX

В Linux я печатаю du -sh * | sort -rh чтобы отобразить файлы и каталоги в моем текущем каталоге, отсортированные от самого большого до самого маленького.

Как мне сделать это в OSX-терминале, желательно, не устанавливая ничего лишнего?

4 ответа

Решение

Вы не Если вы не установите GNU Coreutils.

С варевом например

brew install coreutils

и тогда вы получите команду gsort, которая поддерживает опцию -h.

Лучший ответ на этот вопрос через 2 года (с использованием Terminal в OSX 10.11) заключается в простом добавлении -h к команде ls, чтобы получить удобочитаемые размеры файлов.

Насколько я понимаю, в более поздних выпусках OSX использование brew для установки coreutils не требуется. (Если я не прав, кто-то поправит меня.)

Например, чтобы получить список файлов в текущем каталоге в виде списка из одного столбца и с указанием сведений о файле, введите:

ls -l

Если вы хотите, чтобы размер файла читался человеком, просто добавьте "h":

ls -hl

или же

ls -lh

Буквы после "-" могут быть в любом порядке в этом случае.

Если, как указано в деталях вопроса, нужно, чтобы список файлов был упорядочен по размеру файла, самому большому размеру файла вверху, тогда добавьте заглавную букву "S":

ls -lhS

Если вы хотите, чтобы в списке были также невидимые файлы, добавьте "а":

ls -alhS

Снова буквы после "-" могут быть в любом порядке.


Если вы часто создаете и редактируете файлы в текущем каталоге, возможно, потому что вы находитесь в процессе работы над задачей или проектом, альтернативная комбинация:

ls -hltur

В этом списке перечислены файлы в формате, удобном для чтения человеком, в длинном списке в окне терминала.

"T" указывает порядок сортировки файлов по дате и времени их последнего изменения.

Затем "u" слегка изменяет это, чтобы использовать время последнего доступа к файлам, а не последнее изменение.

"R" затем изменяет порядок списка так, чтобы файлы, к которым недавно обращались или к которым обращались, были перечислены последними в нижней части списка.

Полная комбинация означает, что у вас есть подробный список с файлами, которые вы прочитали, открыли или изменили совсем недавно, или были "затронуты" аналогично процессом, который вы запустили, или другим процессом, и все это в нижней части списка.

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

Эти и другие параметры находятся на странице man (руководство) для команды ls:

man ls

Если вы хотите регулярно перечислять файлы в одном из указанных выше форматов или в другом формате по прочтении справочной страницы, вы можете добавить псевдоним в свой файл .bash_profile (например, используя nano, чтобы открыть этот файл, и делая это, пока вы находятся в вашем домашнем каталоге).

Например, чтобы выполнить то, что желает оригинальный автор вопроса, откройте файл и в новой строке добавьте:

alias lss='ls -hlS'

Затем, после сохранения файла и выхода из этого окна терминала и открытия нового окна терминала, ввод "lss" в командной строке должен обеспечить то, что вы обычно ищете при перечислении файлов.

Если вы не знаете, как использовать nano, сначала откройте страницу man(ual), набрав

man nano

Страница руководства объяснит, как использовать nano.

Чтобы выйти из man-страницы и вернуться туда, где вы можете ввести команду, нажмите клавишу "q".

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

ls -S -lh | awk '{print $5, $9}'

Я просто хочу расширить ответы выше для Mac, используя zsh. Итак, правильный способ - использоватьdu -sh directory_name/.

Если вы используетеls -lhвы, вероятно, заметите, что размеры вашей папки/каталога составляют около 4 КБ. Это связано с тем, что он отображает размер пространства на диске, используемом для хранения метаданных для этой конкретной папки/каталога, а НЕ его содержимого.

хорошего дня

Другие вопросы по тегам