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

watch 57s
views 2

12:43, 05.06.2024

Содержание статьи
arrow

  • Опция -printf команды find
  • Использование команды du с find
  • Исследование размеров файлов с помощью ls
  • Расширенная фильтрация с помощью grep
  • Сортировка и уточнение результатов
  • Подведем итоги

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

Другие статьи на эту тему

Что такое VPS и VDS?
Бэкап VPS
Что такое VPS и VDS?
Бэкап VPS
cookie

Принять файлы cookie и политику конфиденциальности?

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