Вы ищете способ организовать ваши файлы и выполнить над ними некоторые операции? В программировании часто возникают ситуации, когда необходимо отсортировать данные, например, список файлов. Сортировка файлов с использованием команды Bash sort
и ls
поможет вам поддерживать порядок вещей.
В этом уроке вы узнаете основы сортировки файлов и содержимого файлов.
Приступим к сортировке!
Предварительные требования
В этом уроке используется Ubuntu 20.04, но любое распределение Linux подойдет.
Сортировка файлов в алфавитном порядке в Bash
Существует множество способов сортировки файлов в Linux, но давайте перейдем к самому распространенному способу – сортировке файлов в алфавитном порядке.
Запустите терминал и выполните команду ls -l
ниже, чтобы получить список файлов в каталоге в порядке возрастания. Флаг -l
указывает команде ls
выводить результат в формате длинного списка.

По умолчанию команда
ls
выводит файлы в порядке возрастания. Чтобы изменить порядок сортировки, добавьте флаг-r
к командеls -l
, например, так:ls -lr
. Передача флага-r
командеls -l
применяется и к другим примерам в этом учебнике.
Использование сортировки Bash для упорядочивания файлов по размеру
Вместо сортировки файлов в алфавитном порядке, вы можете захотеть отсортировать файлы по размеру. Сортировка файлов по размеру удобна, когда требуется увидеть либо самые маленькие, либо самые большие файлы в списке.
Чтобы отсортировать файлы по размеру, передайте флаг -S
для команды ls
, чтобы отсортировать список файлов по размеру файла.
Выполните следующую команду, чтобы отобразить файлы (ls
) отсортированные по размеру в формате длинного списка (-lS
).
Ниже вы можете видеть, что команда отсортировала файлы по размеру в порядке убывания (самые большие по размеру в начале).
Чтобы изменить порядок сортировки (от меньшего к большему), добавьте флаг
-r
, например:ls -lSr

Сортировка файлов по времени изменения через сортировку в Bash
Переходя к сортировке файлов по размеру, вы можете столкнуться с ситуацией, когда необходимо отсортировать файлы по времени их последнего изменения. Например, вы забыли название файла, который создали, и помните только время его последнего изменения.
Выполните следующую команду, где параметр -t
сообщает команде ls
отсортировать файлы по времени их изменения.

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

Сортировка содержимого в текстовом файле
На данный момент вы изучили различные методы сортировки файлов в каталоге. Переключив внимание с команды ls
, попробуйте выполнить команду sort
. Команда sort
сортирует содержимое файла в зависимости от флага, который вы добавите. Но для начала вам нужен файл с содержимым, которое вы измените.
Запустите следующую команду, чтобы создать текстовый файл с именем ~/data/fruits.txt, содержащий названия фруктов. Флаг -e
включает интерпретацию обратного слэша для записи каждого слова на новой строке (\n
).
Теперь выполните следующую команду, чтобы sort
отсортировал каждое слово в файле fruits.txt
.
Ниже вы можете видеть, что содержимое файла отсортировано по возрастанию.

Без каких-либо флагов команда
sort
сортирует содержимое файла по возрастанию по умолчанию. Чтобы изменить порядок сортировки, добавьте флаг-r
к команде сортировки, например:sort -r fruits.txt
. Сортировка в обратном порядке путем добавления флага-r
применяется и к другим примерам в этом руководстве.
Сортировка списка чисел в текстовом файле
Команда для сортировки чисел аналогична сортировке текста в файле, но вместо этого вы добавите флаг -n
. Давайте сначала создадим файл, чтобы продемонстрировать, как сортировать числа в файле по порядку.
Запустите следующую команду, чтобы создать файл с именем ~/data/scores.txt, содержащий случайные числа, каждое на новой строке.
Теперь выполните следующую команду, чтобы sort
отсортировал числа (-n
) в файле ~/data/scores.txt.
Вы можете видеть ниже перечисленные числа в строках, начиная с наименьшего и заканчивая наибольшим.

Сортировка списка номеров версий в текстовом файле
Возможно, у вас есть список номеров версий в текстовом файле, который вы хотите отсортировать. Если да, то добавление опции --version-sort
сделает это.
Чтобы продемонстрировать, как работает опция --version-sort
, сначала создайте текстовый файл.
Запустите команду ниже, чтобы создать текстовый файл с именем ~/data/versions.txt с произвольными номерами версий, каждый на новой строке (\n
).
Теперь выполните команду ниже, чтобы sort
отсортировать номера версий (--version-sort
) в файле versions.txt. Опция --field-separator
сообщает команде sort
, что числа в каждой версии разделены точкой (.
). Вы можете изменить разделитель полей на любой символ, который разделяет числа в списках версий в вашем текстовом файле.

Сортировка Bash для поиска и сортировки файлов по расширению
Вы использовали одиночные команды (либо ls
, либо sort
) в предыдущих примерах. Но в программировании вам часто приходится использовать две или более команд вместе. Как это сделать? Посредством преобразования одной команды в другую.
Выполните следующую команду, чтобы найти
все файлы в формате markdown (-iname "*.md"
) в рабочем каталоге (.
) и отсортировать их в алфавитном порядке по убыванию (sort -r
). Попробуйте найти и отсортировать другие файлы, изменив "*.md"
на другое расширение файла.

Если вы предпочитаете сохранить отсортированный вывод в текстовый файл вместо стандартного вывода на консоль, добавьте параметр
--output
, вот так:find . -iname "*.md" | sort -r --output=sorted.txt
. Опция--output
указывает командеsort
создать выходной файл для отсортированного списка файлов.
Заключение
Цель этой статьи заключалась в том, чтобы научить вас различным способам сортировки с использованием команд Bash на машине с Linux. Теперь вы узнали, как сортировать список файлов и содержимое файлов. Кроме того, вы также должны знать, как собирать в цепочку различные команды для более сложной сортировки файлов.
Используя это новое знание как отправную точку, почему бы вам не создать скрипты для автоматизации списков файлов и сортировки содержимого файлов?