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

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

Как это сделать в терминале OSX, желательно без дополнительной установки?


person Alex Shroyer    schedule 22.08.2014    source источник


Ответы (3)


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

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

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

ls -l

Если вам нужны удобочитаемые размеры файлов, просто добавьте «h»:

ls -hl

or

ls -lh

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

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

ls -lhS

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

ls -alhS

Опять же, буквы после «-» могут быть в любом порядке.


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

ls -hltur

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

«t» указывает порядок сортировки файлов по дате/времени их последнего изменения.

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

Затем «r» меняет порядок списка, так что файлы, к которым недавно обращались или «тронули», перечислены последними в нижней части списка.

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

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

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

man ls

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

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

alias lss='ls -hlS'

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

Если вы не знаете, как использовать nano, сначала вызовите его справочную страницу, набрав

man nano

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

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

person Cam_Aust    schedule 22.01.2017
comment
Мой ls -h сломан, он показывает очень маленький размер папки, всего несколько байтов или килобайт вместо гб. Здесь что-то не так? Я использую Мохаве. - person Minh Nghĩa; 05.09.2019
comment
@MinhNghĩa Вы уверены, что размеры файлов в папке, которую вы перечисляете с помощью команды ls, не являются маленькими файлами, то есть отображаются правильно. Я не использую эту ОС, в настоящее время все еще работаю с OSX 10.11, поэтому не могу подтвердить проблему. Имейте в виду, Apple планирует перейти на zsh, а не на bash по умолчанию в следующем выпуске OSX. - person Cam_Aust; 06.09.2019
comment
Да, я использую zsh, и ls -lah возвращает, что размер всех моих папок составляет 4 КБ :| - person Minh Nghĩa; 07.09.2019
comment
@MinhNghĩa Проверка файла руководства (man) для ls в zsh не указывает на какие-либо изменения в ls в zsh, хотя, возможно, более позднее обновление zsh показывает. Вы применяете ls в каталоге файлов, в котором вы думаете, что находитесь, или в другом. Я запустил ls - ahl под zsh с установкой zsh в OSX 10.11.6, и размеры моих файлов отображаются так, как должны. Если вы недавно начали использовать Oh My Zsh, возможно, там возникает конфликт, хотя я думаю, что это маловероятно. Напишите, если обнаружите проблему, и, следовательно, ответьте. Мне было бы интересно. - person Cam_Aust; 07.09.2019
comment
Могу ли я предложить вам опубликовать эту проблему как новый вопрос в stackoverflow, а не искать ответ здесь. - person Cam_Aust; 07.09.2019
comment
Обратите внимание, что операция обсуждалась с использованием du, чтобы можно было показать размер каталогов (т.е. рекурсивно). Таким образом, ответ coreutils лучше, чтобы вы могли написать du -sh * | gsort -h - person HankCa; 20.10.2019

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

Например, с пивом

brew install coreutils

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

person Marcin Krasowski    schedule 22.08.2014
comment
Спасибо :) Это то, что я искал! - person cgl; 01.03.2015
comment
NB: по умолчанию команды устанавливаются как g____. Итак, gsort -h. - person Xælias; 22.09.2015
comment
Я хотел это, а не обсуждаемые варианты ls, чтобы я мог использовать их с du. Например cd ~; du -sh * | gsort -h - person HankCa; 20.10.2019

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

ls -S -lh | awk '{print $5, $9}'
person Seema Kadavan    schedule 23.08.2014
comment
Он не определяет размер содержимого каталогов, как это делает du. - person Ken Thomases; 23.08.2014