Ls сортировка. Использование ls, du и sort в linux для сортировки файлов и директорий по размеру

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

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

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

# ls /var/log alternatives.log apt btmp devices dist-upgrade dpkg.log fsck lastlog lxd unattended-upgrades wtmp

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

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

# ls -lha /var/log total 308K drwxrwxr-x 1 root syslog 512 Jun 28 21:55 . drwxr-xr-x 1 root root 512 Sep 22 2017 .. -rw-r--r-- 1 root root 364 Dec 19 2017 alternatives.log drwxr-xr-x 1 root root 512 Sep 22 2017 apt -rw-rw---- 1 root utmp 0 Sep 22 2017 btmp drwxr-xr-x 1 root root 512 Jun 28 23:40 devices drwxr-xr-x 1 root root 512 Jul 19 2017 dist-upgrade -rw-r--r-- 1 root root 18K Dec 19 2017 dpkg.log drwxr-xr-x 1 root root 512 Sep 22 2017 fsck -rw-rw-r-- 1 root utmp 286K Dec 19 2017 lastlog drwxr-xr-x 1 root root 512 Aug 23 2017 lxd drwxr-x--- 1 root adm 512 Aug 1 2017 unattended-upgrades -rw-rw-r-- 1 root utmp 0 Sep 22 2017 wtmp

Описание ключей:

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

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

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

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

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

# du /var 0 /var/backups 0 /var/cache/apparmor 0 /var/cache/apt/archives/partial 1856 /var/cache/apt/archives 61740 /var/cache/apt 3996 /var/cache/debconf 16 /var/cache/ldconfig 0 /var/cache/man/cat1 0 /var/cache/man/cat2 0 /var/cache/man/cat3 0 /var/cache/man/cat4 0 /var/cache/man/cat5 ... ... ...

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

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

# du -h -s /var 22G /var

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

# du --max-depth=1 -h /var 0 /var/backups 65M /var/cache 0 /var/crash 108M /var/lib 0 /var/local 320K /var/log 0 /var/mail 0 /var/opt 0 /var/snap 0 /var/spool 0 /var/tmp 174M /var

Описание ключей:

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

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

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

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

# du --max-depth=1 /var | sort -nr 177160 /var 110432 /var/lib 66408 /var/cache 320 /var/log 0 /var/tmp 0 /var/spool 0 /var/snap 0 /var/opt 0 /var/mail 0 /var/local 0 /var/crash 0 /var/backups

Описание ключей:

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

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

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

Du --max-depth=1 -m | sort -nr

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

Du -s *|sort -nr

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

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

Du -s *|sort -nr|cut -f 2-|while read a;do du -hs $a;done

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

Du -s *|sort -nr > name_file.txt

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

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

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

Команда ls используется для просмотра списка имен файлов и папок в файловой системе. Это руководство покажет вам все переключатели, которые доступны для команды LS вместе с их значением и как использовать их.

Список файлов в папке

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

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

Ls /path/to/file

По умолчанию файлы и папки будут перечислены в столбцах по всему экрану, и все, что вы увидите, это имя файла.

Скрытые файлы (файлы, которые начинаются с точки) не отображаются автоматически, выполнив команду ls.

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

Ls -a ls --all

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

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

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

Ls -A ls --almost-all

Некоторые команды, такие как команда mv и команды sp используются для перемещения и копирования файлов, и есть переключатели, которые могут быть использованы с этими командами, что создает резервную копию исходного файла. Эти резервные копии файлов, как правило заканчиваются на тильду (~).

Чтобы опустить резервные файлы (файлы, заканчивающиеся тильдой) выполните следующую команду:

Ls -B ls --ignore-backups

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

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

Ls --color=never

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

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

Если вы не хотите видеть владельца, использовать вместо следующую команду.

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

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

Ls -l --author

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

Ls -l -h ls -l --human-readable ls -l -s

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

Ls -l -n

Команда ls может быть использована, чтобы показать все файлы и папки из указанного пути.

Например:

Ls -R /home

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

Изменение выходного формата

По умолчанию вывод для листинга файла на экране в столбцах.

Однако вы можете указать формат, как показано ниже:

Ls -X ls --format=across

Отображение списка в столбцах по всему экрану.

Ls -m ls --format=commas

Показать список в формате через запятую.

Ls -x ls --format=horizontal

Отображение списка в горизонтальном формате

Ls -l ls --format=long

Как уже упоминалось в предыдущем разделе, это показывает список в длинном формате.

Ls -1 ls --format=single-column ls --format=verbose

Показывает все файлы и папки, по одному на каждой строке.

Ls -c ls --format=vertical

Отображение списка по вертикали.

Как сортировать вывод команды LS

Для сортировки выходных данных в команде ls можно использовать –sort переключатель следующим образом:

Ls --sort=none ls --sort=size ls --sort=time ls --sort=version

По умолчанию установлено значение none, что означает, что файлы сортируются по имени. При сортировке по размеру файл с наибольшим размером показан первый и самый маленький показан в конце.

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

Кстати все перечисленные выше сортировки могут быть достигнуты следующими командами:

Ls -U ls -S ls -t ls -v

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

Ls -r --sort=size ls --reverse --sort=size

Резюме

Есть целый ряд других команд способных менять форматирование. Вы можете прочитать обо всех остальных переключателей, прочитав LS Linux Manual Page.

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

Команда ls перечисляет имена всех файлов и подсправочников в указанном справочнике. Если вы не укажете справочник, то команда ls напечатает информацию о файлах и справочниках в вашем текущем справочнике.

Обратимся к примеру. Предположим, что вы зарегистрировались в системе UNIX под именем startship и задали команду pwd. Система напечатает имя пути /home/startship. Чтобы отобразить имена файлов и справочников в этом текущем справочнике, введите команду ls и нажмите клавишу . После того, как вы выполните последовательность этих команд, экран будет выглядеть следующим образом:

$ pwd /home/startship $ ls bin draft letters list mbox $

Обратите внимание, что система выдает перечень справочников в алфавитном порядке. Если первым символом имени файла или справочника будет цифра или большая буква, то оно будет напечатано первым.

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

Синтаксис команды:

Ls имя пути

Имя пути может быть либо полным именем пути требуемого справочника, либо родственным. Например, вы можете получить содержание справочника draft, когда вы работаете в справочнике startship, если введете команду ls draft. Экран терминала будет выглядеть следующим образом:

$ ls draft outline table $

В этом примере draft является родственным именем пути от родителя (starship) к подчиненному справочнику (draft).

Вы также можете использовать родственное имя пути для печати содержимого родительского справочника в то время, когда вы находитесь в подчиненном справочнике. Две точки (..) являются самым простым способом выполнения этой функции. Например, следующая командная строка указывает родственное имя пути от справочника startship к home:

$ ls .. jmrs mary2 startship $

Вы получите тот же результат, если зададите полное имя пути от root к home:

Ls /home

Вы можете распечатать содержимое любого системного справочника, к которому имеете право доступа, выполнив команду ls с полным или родственным именем пути.

Команда ls особенно полезна, если вы имеете много файлов и пытаетесь определить, существует ли определенный файл в вашем текущем справочнике. Например, вы находитесь в справочнике draft и хотите определить, есть ли в нем файлы outline и notes. Задайте команду ls следующим образом:

$ ls outline notes outline notes: No such file or directory $

Система сообщит, что файл outline существует в этом справочнике, а вот файл notes не найден.

Команда ls не распечатывает содержимое файла. Для этих целей воспользуйтесь командами cat, pg, pr.

3.6.2.1. Часто используемые ключи команды ls

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

  1. Перечислить все файлы в справочнике.

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

    Например, чтобы распечатать информацию о всех файлах в вашем текущем справочнике (starship), включая и файлы, имя которых начинается с точки, введите команду ls -a и нажмите клавишу . Экран будет выглядеть следующим образом:

    $ ls -a . .. .profile bin draft letters list mbox $

  2. Распечатать содержание в укороченном формате.

    Ключи -C и -F команды ls используются достаточно часто. Вместе эти ключи распечатывают подсправочники и файлы справочников и помечают исполняемые файлы символом *, справочники - символом /, символическую связь(каналы) - символом @.

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

    $ ls -CF bin/ letters/ mbox draft/ list* $

  3. Распечатать содержание в расширенном формате.

    Возможно, более информативным ключом команды ls является ключ -l, который отображает содержание справочника в расширенном формате. Этот формат включает в себя: режим, число связей, владелец, группа, размер в байтах и время последней модификации каждого файла. Предположим, вы задали команду ls -l, находясь в справочнике startship:

    $ ls -l total 30 drwx-xr-x 3 startship project 96 Oct 27 08:16 bin drwx-xr-x 2 startship project 64 Nov 1 14:19 draft drwx-xr-x 2 startship project 80 Nov 8 08:41 letters -rwx----- 2 startship project 12301 Nov 2 10:15 list -rw------ 1 startship project 40 Oct 27 10:00 mbox

    Первая выводная строка (total 30) показывает объем дискового пространства в байтах. Последующие строки дают представление о справочниках и файлах в справочнике startship. Первый символ в каждой строке (d, -, l, b или c) говорит о типе файла:

    D = справочник - = обыкновенный файл l = символическая связь(канал) b = специальный блочный файл c = специальный символьный файл

    Таким образом на экране вы можете видеть, что справочник startship содержит три справочника и два обычных файла.

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

    Следующим является регистрационное имя владельца файла (в данном случае startship), и за ним - групповое имя файла или справочника (project).

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

Я использую следующую команду:

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

Это то, что я имею в виду:

Dr-xr-xr-x

Спасибо за помощь.

4 ответов

На странице man chmod:

read (r), write (w), выполнить (или получить доступ к каталогам) (x), выполнить, только если файл является каталогом или уже выполнил permis- sion для некоторого пользователя (X), установить идентификатор пользователя или группы на выполнение (и), sticky (t), разрешения, предоставленные пользователю, которому принадлежит файл (u), разрешения, предоставленные другим пользователям, которые являются членами группы файлов (g), и разрешения, предоставляемые пользователям, которые находятся в ни одна из двух предыдущих категорий (o).

имея в виду

User can read | user can execute | | group can not write | | | others can read | | | | others can execute | | | | | dr-xr-xr-x | | | | | | | | | others can not write | | | group can execute | | group can read | user can not Write it is a directory

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

R-read w-write x-execute

Слева направо каждый набор определяет разрешения для

1) owner 2) group 3) others(other users)

соответственно в этом файле

Таким образом, в вашем случае каталог имеет права на чтение и выполнение для владельца, группы и других лиц ("-" указывает, что конкретного разрешения там нет). Разрешения могут быть изменены с помощью команды chmod при условии, что у вас есть права доступа к этому файлу/каталогу.

Первый символ - тип файла, обычно вы увидите d для каталога, - для обычного файла или l для ссылки.

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

Первый символ будет либо r либо - , указывая разрешение на чтение.

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

Последний символ будет либо x либо - , либо несколько разных символов в зависимости от специальных свойств файла, как описано в руководстве для ls (см. Ниже).

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

Из руководства для ls

Тип файла - один из следующих символов:

"-" обычный файл

"b" блокировать специальный файл

Специальный файл символа "c"

Файл с высокой производительностью ("смежные данные") C

Каталог "d"

Дверь D (Solaris 2.5 и выше)

"M" off-line ("перенесенный") файл (Cray DMF)

Специальный файл сети "n" (HP-UX)

"p" FIFO (именованный канал)

Порт "P" (Solaris 10 и выше)

"?" другой тип файла

Перечисленные биты режима файла аналогичны спецификациям в символическом режиме (* note Symbolic Modes: :). Но "ls" объединяет несколько бит в третий символ каждого набора разрешений следующим образом:

"s" Если установлены бит set-user-ID или set-group-ID и соответствующий исполняемый бит.

"S" Если бит set-user-ID или set-group-ID установлен, но соответствующий исполняемый бит не установлен.

"t" Если установлены флажок с ограниченным удалением или липкий бит, а другой - исполняемый бит. Флаг ограниченного удаления - это другое имя для липкого бита. * Структура режима записи::.

"T" Если установлен флаг ограниченного удаления или липкий бит, а бит исполняемого файла не установлен.

"x" Если исполняемый бит установлен, и ни одно из вышеизложенного не применяется.

"-" В противном случае.

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

GNU ls" uses a "." для указания файла с контекстом безопасности SELinux, но другого альтернативного метода доступа.

Файл с любой другой комбинацией альтернативных методов доступа помечен символом "+".

Из страниц руководства OpenBSD . Обратите внимание, что это также можно просмотреть в командной строке с помощью man ls . (Удобный для будущих подобных поисков, ах!)

Длинный формат Если заданы опции -g, -l или -n, для каждого файла отображается следующая информация: режим, количество ссылок, владелец (хотя и не для -g), группа, размер в байты, время последней модификации ("mmm dd HH: MM") и имя пути. Кроме того, для каждого каталога, содержимое которого отображается, первая отображаемая строка представляет собой общее количество блоков, используемых файлами в каталоге. Блоки составляют 512 байт, если не переопределены опцией -k или переменной среды BLOCKSIZE.

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

Если файл является специальным символом или блокирует специальный файл, основные и младшие номера устройств для файла отображаются в поле размера.

Если задана опция -T, время последней модификации отображается в формате "mmm dd HH: MM: SS ccyy".

Режим файла, напечатанный в параметрах -g, -l или -n, состоит из типа записи, прав владельца, групповых разрешений и других разрешений. Символ типа записи описывает тип файла следующим образом:

Следующие три поля имеют три символа: разрешения владельца, групповые разрешения и другие разрешения. Каждое поле имеет три позиции символов:

  • Если r, файл доступен для чтения; если -, это невозможно прочитать.
  • Если w, файл доступен для записи; если -, он не доступен для записи.

Первое из следующего, которое применяется: - S - Если в разрешениях владельца файл не является исполняемым и установлен режим set-user-ID. Если в групповых разрешениях файл не является исполняемым и установлен -g, установлен режим роуд-идентификатора. - s - Если в разрешениях владельца файл является исполняемым и установлен режим set-user-ID. Если в групповых разрешениях файл является исполняемым и установлен режим setgroup-ID. - x - Файл является исполняемым или каталог доступен для поиска. - - Файл не может быть прочитан, доступен для записи, исполняемый файл или идентификатор пользователя, а также не установлен -g roup-ID, а также липкий (см. Ниже).