Как найти самые большие папки и файлы в Linux

  Дмитрий Бушуев  | 

Просмотр содержимого командой cat

И так, открывает наш список утилита под названием “cat”. Для просмотра содержимого файла необходимо ввести саму команду “cat”, а затем название файла, который вы хотите просмотреть. Для примера мы возьмем файл под названием “testfile”, в нем содержится текст “Lorem Ipsum“. Данный текст применяется обычно как заглушка в веб разработке. Давайте посмотрим данный текст при помощи команды “cat”:

cat testfile

Как видите, содержимое файла “testfile” вывелось в терминале. Пролистав вниз можно прочесть весь текст, который содержится в данном файле. А в том случае если у вас нет графического интерфейса, пролистать содержимое можно сочетанием клавиш “shift + page up” и “shift + page down”.

Узнать самые большие директории / папки с помощью du

Во многих Unix системах (а среди них, например, Linux, MacOS, FreeBSD) присутствует утилита du, которая так и расшифровывается — dusk usage — использование диска. Её и логичнее всего запустить для поиска больших директорий или, если вам привычнее, папок.

du -sh /path/

Где ключи «-sh» означают: только директории в указанной, а также — в человеко-читаемом виде. То есть просим рассказать о размерах директорий только на 1 уровень вглубь. Это удобно, когда мы хотим примерно представить, где у нас обирают самые большие файлы. Можно и убрать ключ «s» и увидеть информацию по всем папкам, но листинг будет довольно большим.

Дальше, если вы приметили, в какой директории хотите конкретно покопаться:

du -ah /path/to/folder

С ключом «a» du выведет информацию и о файлах, и о папках. Всё это можно чуть-чуть улучшить. Например, вывести топ-10 самых больших папок (дабы не рыться в списке):

du -hs */ | sort -rh | head -10

du нам отдаст список всех директорий с их размером, sort отсортирует всё в обратном порядке (от большого к малому) с учётом, что 1Gb больше 10Mb, ну а head отдаст 10 верхних записей — то есть как раз наши топ-10 файлов по размеру.

Аналогично можно поменять ключ «s» на «a» — будет список вперемешку: файлы и папки.

Основные

Помощь

Забыли аргументы для cp? Какая опция у команды mkdir? Вот вам подсказка:

help nano # кратко о команде “nano” man nano # подробная информация о “nano”

Конвейер

Зачастую с его помощью перенаправляют вывод одной команды на ввод другой или приписывают команду к файлу:

a | b # конвейер: передать вывод команды a на ввод b a > # сохранить вывод команды a в (перезаписать) a >> # сохранить вывод команды a в (добавить) echo «Hello!» | xargs echo # направить вывод первой команды, как аргумент второй

Фильтрация вывода

Бывает, что команда выводится слишком долго. В этом случае вы либо разделите страницу с помощью команды more или less, либо выведите строки, которые содержат специальное слово или предложение с grep:

cat | more # постранично показывает содержимое cat | постранично показывает содержимое , и позволяет перемещаться по файлу cat | grep “I love you” # показывает строчку, где расположена строка “I love you”

Очистка экрана

Слишком много текста в терминале? Просто напишите clear и продолжайте работать.

clear # очистка терминала

Как посмотреть количество файлов в папке Linux

Самый простой способ решить эту задачу — использовать утилиту ls вместе с утилитой wc. Они покажут сколько файлов находится в текущей папке:

Как посмотреть количество файлов в папке Linux

В моем случае утилита выдала результат 21, но поскольку ls выводит размер всех файлов в папке строкой total, то у нас файлов на один меньше. Нужно учесть, что тут отображаются еще и директории. Каждая директория начинается с символа "d", а каждый файл с "-". Для символических ссылок используется "l". Посмотрите внимательно на вывод ls:

Читайте также:  Диск не инициализирован, как восстановить

Чтобы их отсеять используйте grep:

Как посмотреть количество файлов в папке Linux

ls -l | grep "^-" | wc

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

Как посмотреть количество файлов в папке Linux

ls -la | grep "^-" | wc

Так можно подсчитать количество папок:

Как посмотреть количество файлов в папке Linux

ls -la | grep ^d | wc

А так символических ссылок:

Как посмотреть количество файлов в папке Linux

ls -la | grep ^l | wc

Если вам нужно подсчитать количество файлов во всех подпапках, то можно использовать опцию -R:

Как посмотреть количество файлов в папке Linux

ls -laR | grep "^-" | wc

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

Как посмотреть количество файлов в папке Linux

find . -maxdepth 1 -type f | wc

Если нужно смотреть не только количество файлов в папке, но и подпапок, просто не нужно использовать -type f:

Как посмотреть количество файлов в папке Linux

find . -maxdepth 1 | wc

Только папки отдельно:

Как посмотреть количество файлов в папке Linux

find . -maxdepth 1 -type d | wc

А в случае, когда необходимо перебрать все файлы во всех подпапках, не устанавливайте параметр -maxdepth:

Как посмотреть количество файлов в папке Linux

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

Синтаксис

Рассмотрим синтаксис.

grep [параметры] шаблон [имя файла]

Или так:

Команда | grep шаблон

Здесь под параметрами понимаются аргументы,  с помощью которых настраивается поиск и вывод на экран. Например нужно найти слово «линукс», и не учитывать регистр при поиске. Тогда нужно использовать опцию «-i».

Шаблон — это выражение или строка.

Имя файла — где искать.

Основные параметры:

—help. Вывести справочную информацию.

-i. Не учитывать регистр при поиске.

-V. Узнать текущую версию.

-v. Инвертированный поиск.

-s. Не выводить на экран сообщения об ошибкам. Например сообщение о несуществующих файлах.

-r. Поиск в каталогах, подкаталогах или рекурсивный grep.

-w. Искать как слово с пробелами.

-с. Опция считает количество вхождений (счетчик).

-e. Регулярные выражения.

Примеры

Найдем все файлы в текущей директории где встречается слово «linux».

grep linux ./*

Здесь:

  • linux — слово которое нужно искать;
  • точка — текущая директория;
  • звездочка — искать во всех файлах.

Важно! По умолчанию операционная система Линукс учитывает регистр. То есть, если слово написано с большой буквы, а в поиске указано с маленькой, то grep его не найдет.

Чтобы начать поиск без учета регистра необходимо добавить аргумент «-i». В нашем примере получится так:

grep -i linux ./*

Поиск в конкретном документе.  Для примера найдем в документе «test» слово «хороший». Для этого с помощью утилиты «cd» зайдем в текущую директорию, где лежит файл «test». В моем случаи он находится в домашнем каталоге,  я ввожу просто «cd».

grep хороший test

Здесь:

  • хороший — слово которое нужно найти;
  • test — файл, где искать.

Рекурсивный поиск. Чтобы найти определенный текст в определенной директории, используют рекурсивный поиск. Для этого необходимо использовать параметр «-r». Найдем слово «vseprolinux» в домашнем каталоге root и его подкаталогах.

grep -r vseprolinux /etc/root

Найдем три слова сразу в одной строке «все про Линукс». Для этого будем использовать вертикальную черту и введет «grep» три раза.

grep «все» test | grep «про» | grep «Линукс»

Команда grep может сообщить сколько раз встречается слово. Нам поможет опция -с. Посчитаем сколько раз встречается слово «site» в документе «file».

grep -c site file

Как видно на скриншоте выше, в файле «file» три раза встречается слово «site». Однако команда также считает выражение «mysite» за «site». Как сделать чтобы mysite не попал под счетчик?  Добавим опцию «-w.»

grep -cw site file

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

Регулярные выражения.

Регулярные выражение в утилите «grep» — это мощная функция, которая расширяет возможности поиска. Чтобы активировать эту функцию или режим, используется аргумент «-e».

Читайте также:  Обзор GNOME 3 — популярного окружения рабочего стола Linux-систем

Символы в выражениях:

  • $ — конец строки;
  • ^ — начало строки;
  • [] — указывается диапазон значений или конкретные через запятую.

Найдем цифры 1-5 в документе «file».

grep [1-5] file

В скобках написано диапазон значений от одного до пяти, также можно написать конкретные значения через запятую, так: [1,2,3,4,5]

Создание папки и просмотр сведений о её владельце, группе и правах доступа

Создадим папку folder командой mkdir так, как описано в → этой статье. Если действовать по такой же схеме, как и описано выше, то окажется, что этого недостаточно. Будет выдана информация только о размере папки:

[email protected]:~# ls -l folder total 0

Поэтому с папками при просмотре сведении о ней работаем по такой схеме: смотрим информацию не об этой папке, а общую информацию о всей папке. Тогда информация о вложенных в неё файлах и папках выдаётся в полной мере:

[email protected]:~# ls -l total 4 -rw-r—r— 1 root root 0 Apr 10 21:06 file drwxr-xr-x 2 root root 4096 Apr 10 21:18 folder

Как отличить папку от файла в linux

Сразу на этом примере остановлюсь на вопросе о том, как отличить папку от файла в linux. В самом начале строки в символах о правах доступа у файла первым символом идет — тогда, как у папки первый символ это буква d. Именно это отличает папку от файла.

Синтаксис grep и find

Начнём с оператора find. Синтаксис файловой поисковой команды выглядит так:

find [где искать] [параметры] [-опции] [действия]

Некоторые употребительные параметры:

  • -depth : поиск в текущей папке и подкаталогах;
  • -version : вывести версию команды;
  • -print : показывать полные имена файлов (в Linux они могут быть сколь угодно большими);
  • -type f : поиск исключительно файлов;
  • -type d – поиск только директорий (папок).
Синтаксис grep и find

Перечень доступных опций (указываются через дефис):

  • name : файловый поиск по имени;
  • user : поиск по имени владельца файла;
  • perm : по атрибуту «режим доступа»;
  • mtime : по времени последнего изменения (редактирования) файла;
  • group : по группе;
  • atime : по дате последнего открытия файла;
  • newer : поиск файла с датой, более новой, чем заданная в шаблоне директивы;
  • size : по размеру файла в байтах;
  • nouser : поиск файлов, не имеющих введённого атрибута «владелец».

Синтаксис grep:

grep [опции] шаблон [где искать]

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

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

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

Синтаксис grep и find

Рассмотрим наиболее употребительные параметры grep:

  • -b : выводить номер блока перед выдачей результирующей строки;
  • -c : необходимо подсчитать число вхождений искомого фрагмента;
  • -i : поиск без учёта регистра;
  • -n : выдавать на стандартное устройство вывода номер строки, в которой найден искомый фрагмент или шаблон;
  • – l : в результате выдачи должны присутствовать только имена файлов с найденным поисковым фрагментом;
  • -s : игнорировать вывод ошибок;
  • -w : поиск фрагмента, опоясанного с двух сторон пробелами;
  • -v : инвертированный поиск, то есть отображение всех строк, не содержащих заданный фрагмент;
  • -e : параметр указывает, что далее следует регулярное выражение, имеющее собственный синтаксис;
  • -An : вывод искомого фрагмента и предыдущих n строк;
  • -Bn : то же, но со строками, идущими после шаблона.

Теперь имеет смысл перейти от теоретической части к практической.3

Установка, удаление и обновление пакетов

Для установки программ в Linux используются менеджеры пакетов. Они разнятся от дистрибутива к дистрибутиву, поэтому команды для управления ими тоже отличаются. Рассмотрим наиболее популярные.

Debian/Ubuntu

  • sudo apt-get install название пакета — устанавливает программу на выбор. Главное знать, как она называется.
  • sudo apt remove название пакета — стирает с жесткого диска имеющийся в системе пакет.
  • sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе, и тех, что хранятся в подключенных репозиториях.
  • sudo apt-upgrade — обновляет установленные пакеты до самых свежих версий, доступных в подключенных репозиториях.

Red Hat Linux/CentOS

  • sudo dnf install название пакета — устанавливает программу на выбор.
  • sudo dnf upgrade — обновляет установленные пакеты до самых свежих версий.
  • sudo dnf remove название пакета — стирает с жесткого диска имеющийся в системе пакет.

Регистр имен

Также стоит отметить чувствительность файловой системы Linux к регистру. Файлы и будут интерпретироваться как разные файлы и могут находиться в одной директории, в отличие от ОС Windows, который не различает регистр имен. То же правило действует и на каталоги — имена в разных регистрах указывают на разные каталоги.

Назначение каждой директории регламентирует «Стандарт иерархии файловой системы» FHS (Filesystem Hierarchy Standard). Ниже опишем основные директории согласно стандарту FHS:

Регистр имен

Стандарт иерархии файловой системы

  • / — root каталог. Содержит в себе всю иерархию системы;
  • /bin — здесь находятся двоичные исполняемые файлы. Основные общие команды, хранящиеся отдельно от других программ в системе (прим.: pwd, ls, cat, ps);
  • /boot — тут расположены файлы, используемые для загрузки системы (образ initrd, ядро vmlinuz);
  • /dev — в данной директории располагаются файлы устройств (драйверов). С помощью этих файлов можно взаимодействовать с устройствами. К примеру, если это жесткий диск, можно подключить его к файловой системе. В файл принтера же можно написать напрямую и отправить задание на печать;
  • /etc — в этой директории находятся файлы конфигураций программ. Эти файлы позволяют настраивать системы, сервисы, скрипты системных демонов;
  • /home — каталог, аналогичный каталогу Users в Windows. Содержит домашние каталоги учетных записей пользователей (кроме root). При создании нового пользователя здесь создается одноименный каталог с аналогичным именем и хранит личные файлы этого пользователя;
  • /lib — содержит системные библиотеки, с которыми работают программы и модули ядра;
  • /lost+found — содержит файлы, восстановленные после сбоя работы системы. Система проведет проверку после сбоя и найденные файлы можно будет посмотреть в данном каталоге;
  • /media — точка монтирования внешних носителей. Например, когда вы вставляете диск в дисковод, он будет автоматически смонтирован в директорию /media/cdrom;
  • /mnt — точка временного монтирования. Файловые системы подключаемых устройств обычно монтируются в этот каталог для временного использования;
  • /opt — тут расположены дополнительные (необязательные) приложения. Такие программы обычно не подчиняются принятой иерархии и хранят свои файлы в одном подкаталоге (бинарные, библиотеки, конфигурации);
  • /proc — содержит файлы, хранящие информацию о запущенных процессах и о состоянии ядра ОС;
  • /root — директория, которая содержит файлы и личные настройки суперпользователя;
  • /run — содержит файлы состояния приложений. Например, PID-файлы или UNIX-сокеты;
  • /sbin — аналогично /bin содержит бинарные файлы. Утилиты нужны для настройки и администрирования системы суперпользователем;
  • /srv — содержит файлы сервисов, предоставляемых сервером (прим. FTP или Apache HTTP);
  • /sys — содержит данные непосредственно о системе. Тут можно узнать информацию о ядре, драйверах и устройствах;
  • /tmp — содержит временные файлы. Данные файлы доступны всем пользователям на чтение и запись. Стоит отметить, что данный каталог очищается при перезагрузке;
  • /usr — содержит пользовательские приложения и утилиты второго уровня, используемые пользователями, а не системой. Содержимое доступно только для чтения (кроме root). Каталог имеет вторичную иерархию и похож на корневой;
  • /var — содержит переменные файлы. Имеет подкаталоги, отвечающие за отдельные переменные. Например, логи будут храниться в /var/log, кэш в /var/cache, очереди заданий в /var/spool/ и так далее.

Примеры использования

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

Поиск текста в файлах

В первом примере мы будем искать пользователя User в файле паролей Linux. Чтобы выполнить поиск текста grep в файле /etc/passwd введите следующую команду:

User:x:1000:1000:User,,,:/home/User:/bin/bash

А теперь не будем учитывать регистр во время поиска. Тогда комбинации ABC, abc и Abc с точки зрения программы будут одинаковы:

$ grep -A4 «EE» /var/log/

Выведет строку с вхождением и 4 строчки после нее.

$ grep -C2 «EE» /var/log/

Выведет по две строки с верху и снизу от вхождения.