У программы ls есть флаг который сортирует вывод по размеру файлов

Обновлено: 07.07.2024

Уделим немного времени знакомству с консольными утилитами ls, du и sort в ОС Linux. Рассмотрим их использование с основными ключами и в различных комбинациях, для сортировки файлов и директорий (папок) по размеру.

Использование утилиты ls в linux

1. Вывод списка файлов и директории.

Данный вывод неинформативен поэтому лучше использовать ls вместе с ключами.

2. Вывод списока файлов и директорий, включая скрытые файлы в виде "расширеного списка".

"-l" - выводит расширеный листинг.

"-h" - выводит размер файлов в удобном для чтения формате (GB/MB/KB).

"-a" - выводит все файлы, в том числе и "скрытые".

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

Использование утилиты du в linux

1. Вывод списка директории c вложенными директориями.

По-умолчанию "du" выводит размер, не только каждой директории, но и всех вложенных в нее директорий /каталогов / папок.

2. Вывод списка директории без вложенных директорий.

3. Вывод списка директории c одним уровнем вложения.

"--max-depth=1" - задает уровень вложенности директорий равной 1.

"-h" - выводит размер файлов в удобном для чтения формате (GB/MB/KB).

Использование утилиты sort в linux

1. Вывод папок отсортированных по размеру.

"-n" - сортировка по числам.

"-r" - отображает в выводе самые большие числа вначале.

2. Вывод директорий / каталогов / папок отсортированных по размеру в мегабайтах.

3. Вывод директорий / каталогов / папок и файлов отсортированных по размеру.

4. Вывод директорий и файлов отсортированных по размеру и преведенный к удобному виду для восприятия размера (KB/MB/GB).

Самый сложный, но в тоже время самый информативный и красивый вывод.

5. Вывод директорий /каталогов / папок и файлов отсортированных по размеру в файл.

Данный вариант может быть полезен, например в случае очень большошо количества строк в выводе.

На этом все. Существует еще множество различных вариантов сортировки, так что предлагайте свои. Комментируем, подписываемся ну и всем пока:)

Ищете новый способ организации своих файлов и выполнения над ними каких-либо операций? Тем, кто работает с компьютерами, часто надо что-то отсортировать. Например, список файлов. Сортировка файлов с помощью Bash-команд sort и ls поможет вам навести порядок в своих материалах. Здесь мы поговорим об основах сортировки файлов и их содержимого в Linux.




Предварительные требования

Тут, при разборе примеров, используется Ubuntu 20.04, но вам, для того чтобы попробовать то, о чём мы будем говорить, подойдёт любой дистрибутив Linux.

Алфавитная сортировка файлов

Существует множество способов сортировки файлов в Linux. Предлагаю начать с самого распространённого способа — с сортировки файлов по алфавиту.

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




Алфавитная сортировка файлов

Команда ls по умолчанию выводит файлы с сортировкой их по алфавиту в восходящем порядке. Для того чтобы обратить порядок сортировки — нужно передать этой команде флаг -r . Например, это может выглядеть как ls -lr . Передача флага -r команде ls возможна и в примерах, рассмотренных ниже.

Сортировка файлов по размеру

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

Для того чтобы отсортировать файлы по размеру — команде ls надо передать флаг -S .

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


Эта команда, как показано ниже, выведет список файлов, отсортированных от больших файлов к меньшим. Для того чтобы обратить порядок сортировки — воспользуйтесь флагом -r . Выглядеть это может как ls -lSr .



Сортировка файлов по размеру

Сортировка файлов по времени их модификации

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

Для сортировки файлов по времени модификации команде ls можно передать параметр -t .




Сортировка файлов по времени модификации

Сортировка файлов по расширению

Если вам нужен файл определённого типа, в деле по его поиску вам может очень хорошо помочь сортировка файлов по расширению.

Тут нам снова пригодится команда ls . На этот раз — с флагом -X .




Сортировка файлов по расширению

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

Сортировка содержимого текстового файла

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

Выполните следующую команду, для того чтобы создать файл с именем fruits.txt , содержащий названия фруктов. Флаг -e позволяет интерпретировать обратную косую черту в конструкции \n , благодаря чему каждое слово будет идти с новой строки.


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


Ниже показано содержимое файла, отсортированное по алфавиту в восходящем порядке.



Сортировка содержимого файла по алфавиту в восходящем порядке

Команда sort , без флагов, сортирует содержимое файлов в восходящем порядке. Для того чтобы обратить порядок сортировки — воспользуйтесь флагом -r . Соответствующая команда может выглядеть как sort -r fruits.txt . Сортировка данных в обратном порядке с применением -r может быть выполнена и в других рассмотренных тут примерах применения sort .

Сортировка списка чисел в текстовом файле

Для сортировки списков чисел в файлах используется та же команда sort , но — с флагом -n . Чтобы опробовать это на практике — создадим файл scores.txt , в каждой строке которого будет одно число, выбранное мной случайным образом. Вот команда для создания такого файла:


Теперь, чтобы отсортировать числа в этом файле, выполним следующую команду.




Сортировка чисел в файле

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

Сортировка списка номеров версий программы в текстовом файле

Возможно, у вас есть файл с номерами версий программы, содержимое которого вы хотите отсортировать. Для того чтобы это сделать — нам понадобится всё та же команда sort , но теперь — с опцией --version-sort .

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


Теперь выполним команду такого вида:


Здесь имеется новая опция — --field-separator , которая сообщает команде sort о том, что части каждого из номеров разделены точкой. В качестве разделителя полей можно указать любой символ, который разделяет поля номеров версий, хранящиеся в файле.



Сортировка номеров версий в файле

Поиск файлов с заданным расширением и их сортировка

В предыдущих примерах мы решали наши задачи с помощью запуска какой-то одной команды ( ls или sort ). Но при работе в Linux часто возникает необходимость совместного использования двух или большего количества команд. Как это сделать? Сделать это можно с помощью конвейера команд, перенаправляющего выходные данные одной команды на вход другой команды.

Следующая конструкция позволит найти (команда find ) все markdown-файлы ( -iname «*.md» ) в рабочей директории ( . ) и отсортировать их по алфавиту в нисходящем порядке ( sort -r ). Попробуйте поискать и посортировать другие файлы, меняя расширение «*.md» на какое-то другое.




Поиск и вывод нужных файлов с сортировкой их по алфавиту в нисходящем порядке

Если вам удобнее сохранить то, что получится, в файл, а не выводить в консоль, воспользуйтесь опцией --output команды sort . В результате, например, может получиться такая конструкция: find . -iname «*.md» | sort -r --output=sorted.txt . В данном случае отсортированный список найденных файлов попадёт в файл sorted.txt .

Итоги

Я написал эту статью для того, чтобы показать всем желающим различные возможности по сортировке файлов с помощью Bash-команд в Linux. Теперь вы знаете о том, как сортировать списки файлов и то, что содержится в файлах. Вы теперь умеете создавать конвейеры из команд для выполнения более сложных операций сортировки файлов. И, кстати, обладая этими знаниями, вы вполне можете написать скрипты, которые автоматизируют задачи сортировки файлов и содержимого файлов.

В одной из наших статей о перечислении файлов с использованием популярных параметров команды ls для вывода списка всех файлов в определенном каталоге и их сортировки по размеру файлов в Linux.

Рекомендуемое чтение: Как узнать основные каталоги и файлы (дисковое пространство) в Linux

Чтобы вывести список всех файлов в каталоге, откройте окно терминала и выполните следующую команду. Обратите внимание, что при вызове ls без аргументов он выводит список файлов в текущем рабочем каталоге.

В следующей команде флаг -l означает длинный список, а -a указывает ls перечислить все файлы, включая (.) или скрытые файлы. Чтобы не отображать файлы . и .. , используйте параметр -A вместо -a .


Чтобы перечислить все файлы и отсортировать их по размеру, используйте параметр -S . По умолчанию вывод выводится в порядке убывания (от наибольшего к наименьшему).


Вы можете вывести размеры файлов в удобочитаемом формате, добавив параметр -h , как показано.


И для сортировки в обратном порядке добавьте флаг -r следующим образом.


Кроме того, вы можете рекурсивно выводить список подкаталогов с помощью параметра -R .


Вы также найдете полезными следующие статьи по теме:

  1. Как найти недавно измененные или измененные файлы в Linux
  2. Примеры использования «древовидной команды» в Linux для начинающих.
  3. 10 практических примеров использования подстановочных знаков для сопоставления имен файлов в Linux
  4. Способы использования команды "find" для более эффективного поиска в каталогах

Если у вас есть другой способ перечислить файлы, упорядоченные по размеру в 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.

Читайте также: