Поиск больших файлов и директорий в Linux. Linux статьи
Написать статью
Войдите, чтобы писать статьи

Поиск больших файлов и директорий в Linux

3

Поиск больших файлов в Linux

Дисковое пространство не вечно. Рано или поздно приходит момент, когда его катастрофически не хватает. Эффективный способ это исправить — найти файлы и директории, которые занимают больше всего места.

Рассмотрим, как это сделать в Linux с использованием команд find и du.

Поиск больших файлов командой find

Простой поиск

Команда find имеет опцию -size, которая позволяет указать размер файлов для поиска.

Найдем файлы, которые занимают больше 1Gb:

find . -mount -type f -size +1G 2>/dev/null
  • Символ точка . после самой команды find, означает, что поиск нужно вести в текущей директории. Вместо точки вы можете указать, например, корневой раздел / или путь до любой другой директории.
  • -mount означает, что в процессе поиска не нужно переходить на другие файловые системы.
  • -type f означает, что мы ищем файлы.
  • -size +1G означает, что нужно найти файлы, размер которых превышает 1Gb. Размер можно указать в различных форматах:
    • b — блоки размером 512 байт. Числом указывается количество блоков.
    • c — в байтах. Например: -size +128с
    • w — в двухбайтовых словах
    • k — в килобайтах
    • M — в мегабайтах
    • G — в гигабайтах
  • 2>/dev/null используется, чтобы не показывать ошибки (например, если нет доступа к файлу).

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

Вывод подробной информации

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

find . -mount -type f -size +512M -print 2>/dev/null | xargs -r -d '\n' ls -lh | sort -k5,5 -h -r

команда find xargs

Данная команда состоит из трех частей:

  • Команда find ищет файлы, которые имеют размер больше 512 мегабайт.
  • Результирующий список файлов передается команде xargs, которая, в свою очередь, запускает команду ls -lh над этим списком файлов. В результате получается таблица с файлами и информацией о файлах.

    Опция -r, команды xarg, используется для того, чтобы не запускать команду ls, если команда find вернула пустой результат (не нашла файлов). Вместо -r можно использовать длинную запись — опцию --no-run-if-empty
    Опция -d ’\n’ используется, чтобы разделять список файлов только по символу новой строки (по \n). А у нас так и есть — каждый файл на новой строке. Иначе неправильно будут обработаны файлы, в названии которых содержится пробел, так как по умолчанию команда xarg в качестве разделителя использует одновременно пробел, табуляцию или символ новой строки.

    Примечание: Для BSD-систем вместо -d ’\n’ нужно использовать опцию −0, а у команды find вместо -print использовать -print0. Пример: find . -mount -type f -size +512M -print0 2>/dev/null | xargs -0 ls -lh | sort -k5,5 -h -r

  • Затем результат команды ls передается команде sort, которая выполняет сортировку списка (таблицы) по пятой колонке — 5-я колонка содержит размеры файлов.
    Ключ -h означает, что результат нужно вывести в удобно-читаемом виде (human-readable).
    Ключ -r означает, что сортировку нужно выполнять по убыванию (reverse).

Поиск больших файлов и директорий командой du

Команда du используется для вывода размеров файлов и директорий в Linux. Ее можно использовать для поиска больших файлов и директорий. Для этого выполняется команда du и результат сортируется по размеру. Таким образом можно увидеть, кто занимает больше всего места на диске.

Найдем пять самых больших файлов и директорий:

du -ahx . | sort -rh | head -5

команда du размеры файлов и директорий

  • Символ . указывает путь и означает текущую директорию. Для поиска в другой директории укажите вместо точки ее путь.
  • Опции -ahx означают:
    a — искать и файлы и директории;
    h — выводить информацию в удобно-читаемом формате;
    x — не выполнять поиск на других файловых системах.
  • sort -rh выполняет сортировку результата.
  • head −5 выводит только пять первых результатов.
Лайков: +5
войдите, чтобы ставить лайки
3
  • Опубликовано: 05.03.2019

Комментарии

Aleksdem
06.03.2019
06:13
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+5
войдите, чтобы ставить лайки
Добрый день. Рекомендую на эту тему ещё и в сторону ncdu посмотреть.
ncdu / и в отсортированном виде будет вся система перед глазами. :)
-x если надо в пределах одной файловой системы, на случай если подключите дополнительные диски и их сканить не надо.
dev
29.01.2023
16:57
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийAleksdemРодительский комментарий
0
войдите, чтобы ставить лайки
это просто не вероятно!! спасибо Вам огромное. Это лучшее что я мне советовали в никсе!! Почему?!?в Линуксе пользуются всякой хренью, а действительно удобные вещи никто не знает?!
Спасибо еще раз Вы сэкономили мне тонны нервов!
ampatara
11.04.2020
16:05
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Блииииин, ну куда бы я без этого сайта!!!! Спасибо!

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила