Команда 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 и другие. С использованием удобных результатов стало намного проще получить более глубокие знания. У вас есть прекрасная возможность проверить все, что вы только что узнали в теории, - в применении этих команд нет никаких сложностей даже для неопытных пользователей.

Поделиться

Была ли эта статья полезной для вас?

1 пользователи считают эту статью полезной

Популярные предложения VPS

-6%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 2048 Windows

$ 17.24

$

При оплате за год

-10.2%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
100 Mbps
DDoS Protected SSD-KVM 16384 Linux

$ 143.27

$

При оплате за 6 месяцев

-10%

CPU
CPU
10 Xeon Cores
RAM
RAM
64 GB
Space
Space
300 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 65536 Linux

$ 211.41

$

При оплате за год

-15.6%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
30 Mbps
DDoS Protected SSD-KVM 1024 Linux

$ 44.26

$

При оплате за год

-20.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
10 TB
KVM-SSD 16384 Metered Linux

$ 110.66

$

При оплате за год

-8.6%

CPU
CPU
6 Epyc Cores
RAM
RAM
8 GB
Space
Space
100 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 8192 Windows

$ 49.27

$

При оплате за год

-4.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 4096 Windows

$ 19.78

$

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 2048 Linux

$ 8.97

$

При оплате за год

-21.4%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
500 GB
wKVM-SSD 8192 HK Windows

$ 78.04

$

При оплате за год

-20.2%

CPU
CPU
1 Xeon Core
RAM
RAM
1 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
300 GB
wKVM-SSD 1024 HK Windows

$ 22.13

$

При оплате за год

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

cookie

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

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