Команда find в Linux и как она помогает в отображении читаемых размеров файлов

Команда find в Linux и как она помогает в отображении читаемых размеров файлов

05.06.2024
Автор: HostZealot Team
2 мин.
192

Find - это довольно эффективный метод в операционной системе Linux, который необходим для поиска каталогов/файлов по определенным атрибутам. Когда речь идет о размере файлов, результаты по умолчанию могут быть не совсем понятны пользователям.

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

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

Опция -printf команды find

С помощью команды find можно искать файлы по их размеру, разрешению, владельцу, типу, имени и многим другим параметрам. Когда мы применяем другую команду -printf, она выводит информацию о конкретных искомых файлах. Чтобы получить информацию о размере файла, нужно применить такие спецификаторы, как %s.

Вот как должна выглядеть эта команда:

$ find /pathtodirectory -type f -printf "%s %p\n"

Используя %s, вы получаете вывод в байтах. В данном случае будут выведены числа в байтах и названия файлов после них. Чтобы получить более читабельную информацию, например, в килобайтах, а не просматривать вариант по умолчанию, используйте следующую команду:

$ find /pathtodirectory -type f -printf "%k KB %p\n".

Используя %k, вы указываете критерий килобайтов в поиске. Перед использованием любого из рассмотренных примеров лучше проверить, подходит ли он для вашей операционной системы, поскольку в разных Unix-системах эта команда может работать по-разному.

Использование команды du с find

Еще один отличный вариант - использование команды du вместе с find. Команда du уже предустановлена на всех системах Linux, поэтому вам не нужно тратить дополнительное время на процесс установки. Вот пример использования этой команды:

 $ find /pathtodirectory -type f -exec du -h {} +

Теперь давайте попробуем понять, какие команды здесь были использованы. Часть -type f ищет все файлы в определенном каталоге. -exec - это выполнение следующей команды, символ плюс позволяет искать несколько имен файлов, а скобки используются для отображения всех необходимых данных в виде списка.

Для показа всех файлов в мегабайтах также можно использовать команду du. Однако в этом случае файлы, размер которых меньше 1 МБ, будут показаны как имеющие один мегабайт. Командная строка будет выглядеть следующим образом:

$ find /pathtodirectory -type f -exec du -m {} +

Вы можете использовать эту команду и получить достоверный результат только в том случае, если размер файлов составляет 1 МБ и выше.

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

$ find /pathtodirectory -maxdepth 1 -type d -exec du --max-depth=1 -h {} +

Используя эту строку, вы ищете все каталоги в пути, который вы указали сразу после find. Характеристики Maxdepth ищут только каталоги в выбранной папке. Последнее число в выводе показывает общий размер всех каталогов.

Исследование размеров файлов с помощью ls

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

$ find /pathtodirectory -type f -exec ls -lh {} +

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

$ find /pathtodirectory -type f -exec ls -l --block-size=KB {} +

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

 $ find /pathtodirectory -type f -print0 | xargs -0 ls -lS --block-size=KB

Результаты будут показаны в порядке убывания.

Расширенная фильтрация с помощью grep

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

$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {} + | grep -E '\b[0-9]+M\b'

В этой строке \b используется как специфическая граница, что означает, что M будет искаться как часть размера, но не как-либо иначе. Для сужения критериев поиска можно использовать ту же команду и добавить нужное ключевое слово. Строка должна выглядеть следующим образом:

$ find /pathtodirectory -type f -exec du -h {} + | grep 'keyword'

Сортировка и уточнение результатов

Если вы хотите отсортировать файлы по их размеру, есть несколько вариантов, которые можно использовать, и здесь мы предложим вам несколько примеров того, как можно использовать команду sort для этой цели.

$ find /pathtodirectory -maxdepth 1 -type f -exec du -h {} + | sort -h -k1

В этой строке, как и во многих других, мы используем команду du, чтобы получить человекочитаемые размеры. С помощью характеристики -k1 мы уточняем, что фильтрация должна производиться в зависимости от начального поля каждой строки. По умолчанию сортировка производится по возрастанию, но с добавлением параметра -r можно получить и убывающие результаты. Вот как это должно выглядеть:

 $ find /pathtodirectory -maxdepth 1 -type f -exec du -h {} + | sort -rh -k1

Мы можем пойти еще дальше в нашем поиске и указать точный размер файла, который нам нужен, или ниже/выше определенного диапазона. Например, давайте найдем в Интернете файлы размером менее 30 МБ:

$ find /pathtodirectory -maxdepth 1 -type f -size -30M -exec du -h {} +

Для поиска результатов, превышающих 30 мегабайт, вы можете просто заменить минус на плюс. Если вам нужны файлы определенного размера, а не больше или меньше, достаточно убрать +/- перед числом мегабайт.

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

find /pathtodirectory -maxdepth 1 -type f -size +30k -exec du -h {} + | sort -h -k1

Подведем итоги

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

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

# VPS Поделиться:
Статьи по Теме