- Как упорядочить все файлы по размеру в Linux
- Как в Linux вывести список всех файлов каталога, упорядоченный по размеру
- Вывод списка файлов с сортировкой
- Вывод директорий над файлами
- Как отсортировать файлы по размеру с помощью команды ls в Linux
- 1) Перечислить содержимое содержимого каталога при сортировке по размеру
- 2) Список содержимого каталога с сортировкой по размеру
- 3) Сортировка выходных данных и размеров в удобном формате для чтения (например, 1K 48M 1G)
- Бонусные советы
- 4) Список в алфавитном порядке сортировки
- 5) Список в обратном порядке по алфавиту
- 6) Список скрытого содержимого каталога в алфавитном порядке сортировки
- 7) Список содержимого каталога в алфавитном порядке сортировки
- Как отсортировать вывод du -h по размеру
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Ответ 13
- Ответ 14
- Ответ 15
- Ответ 19
- Ответ 20
- Ответ 21
- Ответ 23
- Ответ 24
Как упорядочить все файлы по размеру в Linux
В одной из наших статей о перечислении файлов с использованием популярных параметров команды ls для вывода списка всех файлов в определенном каталоге и их сортировки по размеру файлов в Linux.
Рекомендуемое чтение: Как узнать основные каталоги и файлы (дисковое пространство) в Linux
Чтобы вывести список всех файлов в каталоге, откройте окно терминала и выполните следующую команду. Обратите внимание, что при вызове ls без аргументов он выводит список файлов в текущем рабочем каталоге.
В следующей команде флаг -l означает длинный список, а -a указывает ls перечислить все файлы, включая (.) или скрытые файлы. Чтобы не отображать файлы . и .. , используйте параметр -A вместо -a .
Чтобы перечислить все файлы и отсортировать их по размеру, используйте параметр -S . По умолчанию вывод выводится в порядке убывания (от наибольшего к наименьшему).
Вы можете вывести размеры файлов в удобочитаемом формате, добавив параметр -h , как показано.
И для сортировки в обратном порядке добавьте флаг -r следующим образом.
Кроме того, вы можете рекурсивно выводить список подкаталогов с помощью параметра -R .
Вы также найдете полезными следующие статьи по теме:
- Как найти недавно измененные или измененные файлы в Linux
- Примеры использования «древовидной команды» в Linux для начинающих.
- 10 практических примеров использования подстановочных знаков для сопоставления имен файлов в Linux
- Способы использования команды «find» для более эффективного поиска в каталогах
Если у вас есть другой способ перечислить файлы, упорядоченные по размеру в Linux, поделитесь с нами или у вас есть вопросы или мысли об этом руководстве? Если да, напишите нам через форму обратной связи ниже.
Источник
Как в Linux вывести список всех файлов каталога, упорядоченный по размеру
Оригинал: How to List All Files Ordered by Size in Linux
Автор: Aaron Kili
Дата публикации: January 18, 2020.
Перевод: В.Костромин
Дата перевода: 4 мая 2020 г.
В одной из наших предыдущих заметок о популярной команде ls, мы рассказали как получить список файлов, отсортированный по времени изменения (дате и времени) в Linux. В настоящей, короткой статье мы покажем несколько полезных опций команды ls , с помощью которых вы сможете получить список файлов каталога, отсортированный по размеру.
Чтобы получить список фалов в каком-то каталоге, откройте окно терминала и задайте приведенные ниже команды. Обратите внимание, что будучи запущена без параметров, команда ls выведет список файлов в текущем каталоге.
В следующем примере опция -l задает вариант вывода списка в длинном формате, а опция -a указывает ls , что нужно вывести все содержимое каталога, включая скрытые файлы и указание на родительский каталог (.) . Для того, чтобы строки . и .. не показывались, используйте опцию -A вместо -a .
Список всех файлов в каталоге
Чтобы получить список файлов, отсортированный по размеру, используйте опцию -S . По умолчанию сортировка производится в порядке убывания (от больших к меньшим по размеру).
Список файлов, отсортированный по размеру
Вы можете получить отображение размера файла в человеко-читаемом формате, если добавите опцию -h как показано в следующем примере.
Список файлов, отсортированный по размеру, в человеко-читаемом формате
Если хотите получить список, отсортированный в обратном порядке, то есть по возрастанию, добавьте опцию -r , как в следующем примере.
Список файлов, отсортированный по размеру в порядке возрастания
Кроме того, вы можете получить рекурсивный список файлов в подкаталогах, если используете опцию -R .
Рекурсивный список файлов в подкаталогах
Вы можете найти другие статьи о консольных командах, опубликованные на нашем сайте:
Источник
Вывод списка файлов с сортировкой
Поделюсь удобными параметрами команды ls для сортировки списка файлов. Команда ls предназначена для вывода списка файлов и директорий, но по умолчанию она сортирует список по имени.
Для того, чтобы отсортировать список файлов используются следующие опции:
Опция | Эквивалентная опция | Описание |
---|---|---|
-U | —sort=none | без сортировки |
-X | —sort=extension | сортировка по расширению файла |
-S | —sort=size | сортировка по размеру |
-t | —sort=time | сортировка по времени изменения |
-v | выполнять сортировку по версиям файлов | |
-r | выполнять сортировку в обратном порядке |
Например, мы хотим отсортировать список по размеру файлов, тогда выполняем команду:
Это эквивалентно следующей команде:
Аналогично, например, если мы хотим получить список, отсортированный по расширению файлов:
Вывод директорий над файлами
Обычно команда ls выводит директории вперемешку с файлами. Некоторые реализации команды ls поддерживают полезную опцию: —group-directories-first. Если данная опция указана, то все директории будут выводится над списком файлов, что очень удобно.
Дополнительную информацию по команде ls вы можете получить, выполнив в терминале: man ls.
Источник
Как отсортировать файлы по размеру с помощью команды ls в Linux
Если вы новый пользователь в мире Linux, команда ls является самой популярной и очень полезной командой для перечисления содержимого каталогов.
В этой статье мы объясним, как использовать параметр сортировки ls для отображения содержимого каталога по размеру.
1) Перечислить содержимое содержимого каталога при сортировке по размеру
Чтобы перечислить содержимое определенного каталога с сортировкой по размеру, мы будем использовать опции -lS с командой ls.
Чтобы указать размер файла, мы будем использовать параметр -s с командой ls.
2) Список содержимого каталога с сортировкой по размеру
Чтобы перечислить содержимое определенного каталога с сортировкой по размеру, мы будем использовать опции -lSr с командой ls.
3) Сортировка выходных данных и размеров в удобном формате для чтения (например, 1K 48M 1G)
для сортировки выходных данных и размеров в человекочитаемом формате мы будем использовать -h с командой ls.
Кроме того, мы можем выводить размеры в читаемом формате для конкретного расширения.
Бонусные советы
4) Список в алфавитном порядке сортировки
Чтобы перечислить содержимое определенного каталога с сортировкой по алфавиту, мы будем использовать команду ls только без опции, потому что по умолчанию используется алфавитная сортировка.
Чтобы перечислить содержимое определенного каталога с подробной информацией, добавьте путь к каталогу.
5) Список в обратном порядке по алфавиту
Чтобы перечислить содержимое определенного каталога с подробными сведениями в обратном порядке сортировки по алфавиту, мы будем использовать опции -lr с командой ls.
6) Список скрытого содержимого каталога в алфавитном порядке сортировки
Чтобы отобразить скрытое содержимое определенного каталога, мы будем использовать опции -a или -all с командой ls.
7) Список содержимого каталога в алфавитном порядке сортировки
Чтобы показать содержимое определенного каталога с подробными сведениями, такими как права доступа к файлам, количество ссылок, имя владельца и владельца группы, размер файла, время последней модификации и имя файла / каталога, мы будем использовать -l с командой ls.
Источник
Как отсортировать вывод du -h по размеру
Мне нужно получить список вывода, который может читать человек.
Однако у du нет опции «сортировать по размеру», sort не работает с флагом, понятным человеку.
Выводит отсортированное использование диска по размеру (по убыванию):
Однако запуск его с флагом, понятным для человека, не выполняет сортировку должным образом:
Кто-нибудь знает способ сортировки du -h по размеру?
Ответ 1
Начиная с версии GNU coreutils 7.5, выпущенной в августе 2009 года, sort допускает параметр -h, который позволяет использовать числовые суффиксы, подобные тем, что выдает du -h:
Если же использовать сортировку, которая не поддерживает -h, можно установить GNU Coreutils. Например, на старой версии Mac OS X:
rew install coreutils
du -hs * | gsort -h
Из sort руководства:
-h, —human-numeric-sort compare human readable numbers (e.g., 2K 1G)
Ответ 2
Есть очень полезный инструмент под названием ncdu, который я использую для поиска и удаления этих надоедливых папок и файлов, которые занимают много места на диске. Он работает в консоли, быстрый и легкий, и имеет пакеты для всех основных дистрибутивов.
Ответ 3
Отсортируйте человекочитаемый вывод du -h с помощью другого инструмента. Например, Perl!
du -h | perl -e «sub h<%h=(K=>10,M=>20,G=>30);($n,$u)=shift=
Можно разделить на несколько строк, чтобы поместить на экране, или оставить как есть, он будет работать в любом случае.
Вывод:
Окончательный результат следующий:
Ответ 4
У меня тоже была такая проблема, и сейчас я использую другой способ:
du -scBM | sort -n
Это не даст масштабированных значений, но всегда будет отображать размер в мегабайтах. Это не идеально, но для меня это лучше, чем ничего.
Ответ 5
Насколько я могу судить, есть три варианта:
Изменить du для сортировки перед отображением.
Изменить sort для поддержки человечески понятных размеров для числовой сортировки.
Постобработка вывода из sort для изменения базового вывода на понятный человеку.
Вы также можете сделать du -k и выводить в килобайтах.
Для 3 варианта вы можете использовать следующий сценарий:
for line in sys.stdin.readlines():
if size =1024; x/=1024)<
Запуск этой программы в моем каталоге .vim дает результат:
Ответ 7
Эта версия использует awk для создания дополнительных столбцов для ключей сортировки. Она вызывает du только один раз. Вывод должен выглядеть точно так же, как в du.
Я разбил его на несколько строк, но его можно собрать и в одну.
index(«KMG», substr($1, length($1))),
substr($1, 0, length($1)-1), $0>’ |
sort -r | cut -f2,3
Пояснения:
BEGIN — создает строку для индекса, чтобы подставить 1, 2, 3 для K, M, G для группировки по единицам, если нет единицы (размер меньше 1K), то нет совпадения и возвращается ноль (идеально!).
Выводит новые поля — единицу измерения, значение (для правильной работы альфа-сорта с добавкой нуля, фиксированной длины) и исходную строку.
Проиндексировать последний символ поля размера.
Вытащить числовую часть размера.
Сортирует результаты, отбросывает лишние столбцы.
Попробуйте без команды cut, чтобы увидеть, что она делает.
Вот версия, которая выполняет сортировку внутри сценария AWK и не требует команды cut:
index(«KMG», substr($1, length($1))),
substr($1, 0, length($1)-1), $0);
for (i = c; i >= 1; i—)
Ответ 8
Вот пример, который показывает каталоги в более компактной обобщенной форме. Он обрабатывает пробелы в именах каталогов.
% du -s * | sort -rn | cut -f2- | xargs -d «\n» du -sh
7.2G VirtualBox VMs
Сортировка файлов по размеру в МБ:
du —block-size=MiB —max-depth=1 path | sort -n
Ответ 9
У меня есть простая, но полезная обертка для du на языке python под названием dutop. Обратите внимание, что мы (сопровождающие coreutils) рассматриваем возможность добавления функциональности для сортировки «человеческого» вывода напрямую.
Ответ 10
$ du -B1 | sort -nr | perl -MNumber::Bytes::Human=format_bytes -F’\t’ -lane ‘print format_bytes($F[0]).»\t».$F[1]’
Мне начинает нравиться perl. Возможно, вам придется сделать так:
Ответ 11
Этот фрагмент был заимствован у «Жан-Пьера» с http://www.unix.com/shell-programming-scripting/32555-du-h-sort.html . Можно ли верить ему?
du -k | sort -nr | awk ‘
$1 = sprintf(«%.1f %s», $1, Units[u]);
Ответ 12
Используйте флаг «-g»:
compare according to general numerical value
В моем каталоге /usr/local выводится примерно так:
Ответ 13
Нашел это в сети . похоже, работает нормально:
du -sh * | tee /tmp/duout.txt | grep G | sort -rn ; cat /tmp/duout.txt | grep M | sort -rn ; cat /tmp/duout.txt | grep K | sort -rn ; rm /tmp/duout.txt
Ответ 14
Ответ 15
Я изучил awk, придумав вчера этот пример. Это заняло некоторое время, но было очень весело, и я научился использовать awk.
Он запускает du один раз, и его вывод очень похож на du -h
2.35MB ./Work Docs
1.59MB ./Work Docs/Work
584.00KB ./scan 1.pdf
16.00KB ./Membership Transmittal Template.xlsx
Ответ 19
du -h /folder/subfolder —max-depth=1 | sort -hr
Можно добавить, | head -10, чтобы найти первые 10 или любое количество подпапок в указанном каталоге.
Ответ 20
du -sk /var/log/* | sort -rn | awk ‘
Ответ 21
Используйте следующий сценарий bash:
# list contents of the current directory by increasing
#+size in human readable format
# for some, «-d 1» will be «—maxdepth=1»
du -k -d 1 | sort -g | awk ‘
(Поскольку это последовательный вывод, вы можете добавить | sort -n, если вам действительно нужен отсортированный результат).
Эта команда, отфильтрует любой каталог, чье (суммарное) содержимое не превышает 512 МБ, а затем отображдает размеры в гигабайтах. По умолчанию du использует размер блока 512 байт (поэтому условие awk в 220 блоков равно 512 МБ, а его делитель 221 преобразует единицы измерения в ГБ — мы могли бы использовать du -kx с $1 > 512*1024 и s/1024^2 для лучшей человекочитаемости). Внутри условия awk мы устанавливаем s в размер, чтобы можно было удалить его из строки ($0). При этом сохраняется разделитель (который сворачивается в один пробел), поэтому конечный %s представляет собой пробел, а затем имя объединенного каталога. %7s округляет размер %.2f GB (увеличивает до %8s, если у вас >10TB).
В отличие от большинства приведенных здесь решений, это правильно поддерживает каталоги с пробелами в именах (хотя все решения, включая это, будут неправильно обрабатывать имена каталогов, содержащие переносы строк).
Ответ 23
По крайней мере, с помощью обычных инструментов это будет трудно сделать из-за формата человекочитаемых чисел (обратите внимание, что sort все делает правильно, поскольку сортирует числа — 508, 64, 61, 2, 2 — он просто не может сортировать числа с плавающей запятой с дополнительным множителем).
Я бы попробовал сделать все наоборот — использовать вывод «du | sort -n -r», а затем преобразовать числа в человекочитаемый формат с помощью какого-нибудь скрипта или программы.
Ответ 24
Вы можете попробовать следующее:
for i in «du -s * | sort -n | cut -f2»
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Источник