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

0
6

Вопрос: Как найти большие файлы в директории

Ответ: В Linux для поиска файлов, директорий, ссылок используется утилита find с разными ключами. Мы ее и будем использовать в нашей задаче.


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

[email protected]:~# dd if=/dev/zero of=/var/www/file.test bs=1M count=52
52+0 records in
52+0 records out
54525952 bytes (55 MB) copied, 0.453559 s, 120 MB/s

теперь в директории /var/www/ находиться файл file.test размером 52Мбайта.

1. Поиск файлов в текущей директории размером больше 10Мбайт

alexey@theTech:/var/www$ find . -size +10M -print
./var/www/file.test

find — утилита для поиска файлов

. — где ищем. В нашем случае текущей директории (/var/www/* — поиск в директории /var/www/, ~ — поиск в домашней директории, / — поиск в корне файловой системы, $HOME — поиск в домашней директории )

-size +10M — размер искомого файла. Больше 10Мбайт(b — блок, размером 512 байт, c — байт, w — слово, размером 2байта, k — килобайт, M — мегабайт и G — гигабайт )

-print — вывод на экран

2. Поиск файлов больше 50Мб с выводом детальной информации

Усложним задачу и попробуем вывести на экран кроме имени файла еще некоторую информацию о нем.

[email protected]:~# find /var/www/* -type f -size +50000k -exec ls -lh {} \; | awk ‘{ print $8 » » $5 » » $1 » » $3″:»$4 }’
./var/www/test.file 110M -rw-r—r— alexey:root
./var/www/file.test 52M -rw-r—r— alexey:root

-type f — тип, который ищем (f — файл, d — директория, l — символичная ссылка, s — сокет, b — блок)
-exec ls -lh {} \; — выполняет команду ls -lh над найденными файлами (вывод содержимого директории)
awk ‘{ print $8 » » $5 » » $1 » » $3″:»$4 }’ — обрабатываем вывод информации командой ls -lh
и выводим более детальную информацию в нужном нам порядке:
$8 — имя файла
$5 — размер файла
$1 — права доступа
$3 — владелец
$4 — группа

3. Поиск файлов заданного размера и определенного имени

[email protected]:~# find $HOME -name w* -size +1M -exec ls -lh {} \; | awk ‘{ print $8 » » $5 }’
/home/alexey/webmin_1.510-2_all.deb 14M

-name w* — любой файл имя, которого содержит w*

Можно дальше извращаться с ключами утилиты find и применять разнообразные фильтры, но это в следующий раз.
Задаем вопросы — не стесняемся