Sorting file in linux

How to sort lines of text files in Linux?

To sort lines of text files, we use the sort command in the Linux system.

The sort command is used to prints the lines of its input or concatenation of all files listed in its argument list in sorted order. The operation of sorting is done based on one or more sort keys extracted from each line of input. By default, the entire input is taken as the sort key.

Syntax

The general syntax of the sort command is as follows.

sort [OPTION]. [FILE]. sort [OPTION]. --files0-from=F

Brief description of options available in the sort command.

Sr.No. Option & Description
1 -b, —ignore-leading-blanks
Ignore leading blanks.
2 -d, —dictionary-order
Consider only blanks and alphanumeric characters.
3 -f, —ignore-case
Fold lower case to upper case characters.
4 -g, —general-numeric-sort
Compare according to general numerical value.
5 -i, —ignore-nonprinting
Consider only printable characters.
6 -M, —month-sort
Compare (unknown)
7 -h, —human-numeric-sord
Compare human-readable numbers.
8 -n, —numeric-sort
Compare according to string numerical value.
9 —random-source=FILE
Get random bytes from the FILE.
10 -r, —reverse
Reverse the result of comparisons.
11 —sort=WORD
Sort according to the WORD.
12 —help
Display this help and exit
13 —version
Output version information and exit.

Here, we will create a file using the cat command and sort this file using the sort command in the Linux system.

$ cat >text.txt Sid Vikash Gaurav ^C $ sort text.txt Gaurav Sid Vikash

Here, we will sort a file in the reverse order using the -r or —reverse option with the sort command in the Linux operating system.

$ cat >text.txt Sid Vikash Gaurav ^C $ sort text.txt Vikash Sid Gaurav

In the above example, we already saw that how can we sort a file but output of the sort command on standard output. Here, we will save output into a new file in the file system.

Читайте также:  Виртуальная машина linux консоль

After executing the above command, a new file will be created with the newtext.txt name.

To check more information and options with descriptions about the sort command, we use the —help option with the sort command as shown below.

To check in which version the sort command is working, we use the —version option with the sort command in the Linux system as shown below.

Источник

Сортировка файлов в командной оболочке Linux

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Мониторинг температуры linux manjaro

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

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

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

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

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

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

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

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

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

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

echo -e "apple \nmango \nwatermelon \ncherry \norange \nbanana" > fruits.txt 

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

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

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

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

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

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

echo -e "45 \n69 \n52 \n21 \n3 \n5 \n78" > scores.txt 

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

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

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

Читайте также:  Garuda linux или manjaro

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

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

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

echo -e "1.0.0.1 \n 6.2.1.0 \n4.0.0.2" > versions.txt 

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

sort --version-sort --field-separator=. 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. Теперь вы знаете о том, как сортировать списки файлов и то, что содержится в файлах. Вы теперь умеете создавать конвейеры из команд для выполнения более сложных операций сортировки файлов. И, кстати, обладая этими знаниями, вы вполне можете написать скрипты, которые автоматизируют задачи сортировки файлов и содержимого файлов.

НЛО прилетело и оставило здесь промокоды для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS .

Доступно до 31 декабря 2021 г.

Источник

Оцените статью
Adblock
detector