Команда Linux FIND с примерами


Знаете ли вы, сколько файлов содержится в новой установке Linux? Если вы используете PopOS! Дистрибутив Linux, например, имеется более 31 000 файлов. Это еще до того, как вы начнете создавать документы, хранить музыку, загружать PDF-файлы или систематизировать изображения.

Из-за этого найти нужный файл или папку в Linux, когда вам это нужно, становится непростой задачей. В этой статье вы узнаете, как использовать команду FIND в Linux, и мы приведем вам все возможные примеры.

Синтаксис команды Linux FIND

Синтаксис относится к тому, как соединяются слова или команды. Точно так же, как обычное предложение может стать бессмысленным из-за простого перетасовки слов, так и команды могут дать сбой, если они не используются в правильном синтаксисе.

найти [путь] [условия] [действия]

Вот что это означает:

find – запускает утилиту поиска в Linux

путь – где искать

условия – аргументы, которые вы хотите применить к поиску

действия  – что вы хотите делать с результатами

Простой пример использования всех трех выглядит так:

найти . -имя файла-sample.rtf -print

Как вы догадались, будет найден файл с именем file-sample.rtf .

Путь с точкой (. ) указывает find искать в текущем каталоге и во всех каталогах внутри него.

Условие -name предписывает find получить файл с этим конкретным именем.

Действие -print указывает ПОИСКУ показать результаты на экране.

Точка и -print являются значениями по умолчанию для команды find. Так что он все равно будет делать то же самое, если вы их не используете. Итак, find -name file-sample.rtf даст вам те же результаты.

Linux НАЙТИ в другом каталоге

Вы можете искать в каталоге, отличном от того, в котором вы находитесь. Просто вставьте путь к каталогу после НАЙТИ. Если вы находитесь в корне и знаете, что файл находится где-то в каталоге home/user , вы должны использовать:

найти имя дома/пользователя file-sample.rtf

Это по-прежнему рекурсивный поиск, поэтому он будет проходить по всем каталогам в папке user ..

Linux FIND Поиск в нескольких каталогах

Если вы хотите искать в нескольких каталогах одновременно, просто перечислите их в команде, разделив пробелом.

найти /lib /var /bin -name file-sample.rtf

Linux FIND без рекурсии или с ограничением рекурсии

Если вы использовали приведенную выше команду НАЙТИ на корневом уровне, она просмотрит каждый каталог в системе. Поэтому, если вы хотите придерживаться только текущего каталога, используйте параметр -maxlength . Число после -maxlength указывает Find, насколько глубоко нужно пройти, прежде чем остановиться.

Использование -maxlength 1 означает только этот каталог.

find -name file-sample.rtf -maxlength 1

Использование -maxlength 2 или большего числа означает переход на столько же уровней глубже.

найти -maxглубина 5 -имя файла-образца.rtf

Пример подстановочного знака FIND в Linux

Команда НАЙТИ использует звездочку (* ) в качестве подстановочного знака. Используйте его для любой части имени, в которой вы не уверены. Его можно использовать в имени более одного раза. Если тип файла не является частью имени файла, результаты также будут включать соответствующие каталоги.

найти файл с именем дома/пользователя*образец*

Поиск в Linux по примеру примера

Чтобы искать только файл или каталог, используйте опцию -type и соответствующий дескриптор. Их несколько, но наиболее распространены файлы и каталоги:

f – файл

d – каталог

b – заблокировать устройство

c – символьное устройство

l – символическая ссылка

s – сокет

найти домашний/пользователь -имя файла*образец* -тип d

Пример Linux FIND без учета регистра

В отличие от Windows, в Linux важно, является ли буква прописной или строчной. Поэтому, если вы хотите, чтобы он выполнял поиск как по File-Sample.rtf, так и по file-sample.rtf, используйте параметр -iname .

найти home/user -inname File-Sample.rtf

Пример поиска нескольких файлов в Linux

Предположим, вы хотите найти версии файла .rtf и .html. Это можно сделать одной командой с помощью оператора -o (или). В некоторых дистрибутивах вам может потребоваться поместить имена в скобки, например ( -name file-sample.rtf -o -name file-sample.html ) ..

найти home/user -name file-sample.rtf -o -name file-sample.html

Linux НАЙТИ файлы, имена которых не совпадают

Возможно, вы знаете, что существует версия файла .html, но нет других. Вы можете отфильтровать версию .html из поиска, используя параметр -not .

найти home/user -name file-sample* -not -name *.html

Linux FIND без ошибок

Обратите внимание, что в примере поиска без рекурсии перечислены все каталоги, в которых не удалось выполнить поиск, и правильный результат. Это раздражает. Давайте запретим ему показывать все эти каталоги с надписью «Отказано в доступе». Объедините его с другим Команда терминала Linux, grep. Вы также можете использовать Find с помощью grep to найти файлы с определенными словами в них.

find -maxlength 5 -name file-sample.rtf 2>&1 | grep -v «В доступе отказано»

Давайте разберем 2>&1 .

2 – представляет собой stderr, что означает вывод стандартных ошибок.

1 – представляет stdout, что является сокращением от стандартного вывода

> – означает перенаправление любого вывода, находящегося слева от него, на то, что находится справа от него.

& – означает «соединить».

Итак, 2>&1 означает, что стандартные ошибки перенаправляются, а затем объединяются со стандартным выводом в один вывод.

Теперь давайте посмотрим на | grep -v «В доступе отказано» .

| (называемый каналом) – сообщает Linux передать результаты того, что находится слева от него, тому, что находится справа. Он передается команде grep.

grep – утилита текстового поиска.

-v — указывает grep искать все, что не соответствует тексту слева от -v. В этом случае он сообщает grep искать только все, что не содержит текста или строки «В доступе отказано». Таким образом, grep покажет вам только те результаты, которые вы ищете, и любые ошибки, которые не соответствуют «В разрешении отказано».

Пример поиска по разрешениям в Linux

.

Чтобы эффективно использовать это, вам нужно узнать разрешения Linux.

Все файлы примеров имеют разрешения 664, кроме одного с разрешениями 775. Чтобы найти его, используйте параметр -perm .

найти документы/ -имя файла-образца* -тип f -perm 775

Пример поиска по размеру в Linux

Поиск файлов по размеру удобен, поскольку такие огромные файлы заполняют ваш жесткий диск. Используйте опцию -size, желаемый размер и один из следующих суффиксов. Если суффикс не используется, по умолчанию используется значение -size b . Чтобы найти файлы, равные или превышающие определенный размер, поставьте знак плюса (+) перед размером.

M – Мегабайты

G – гигабайты

k – килобайт

b – блоки (512 байт – по умолчанию)

c – байты

w – слова (два байта вместе)

найти -size +500 тыс.

Linux НАЙТИ по владельцу

Существует два способа поиска файлов по владельцу. Один — по имени пользователя владельца, а другой — по группе пользователя. Чтобы найти по имени пользователя, используйте параметр -user , за которым следует имя пользователя. Для поиска по группе пользователей используйте -group , а затем имя группы..

find -user groupname или find -user username

Linux НАЙТИ файлы по примеру последнего изменения

Чтобы найти файлы, которые были изменены или отредактированы за последние X дней, используйте -mtime , за которым следует число. Поставив перед числом знак минус ( ), вы обнаружите, что все изменилось за это количество дней до настоящего момента. Знак плюс (+ ) означает, что прошло столько дней до настоящего момента.

find -name «file-sample*» -mtime +5 (более 5 дней назад)

find -name «file-sample*» -mtime -5 (менее 5 дней назад)

Чтобы найти дату последнего изменения в минутах, используйте параметр -mmin, за которым следует количество минут. Используйте + и –, как указано выше.

find -name «file-sample*» -mmin -5

find -name «file-sample*» -mmin +5

Пример поиска файлов Linux по времени последнего доступа

.

Для поиска файлов по времени их последнего открытия используется параметр -atime для дней и -amin для минут. Затем укажите количество дней или минут, чтобы вернуться назад, и используйте знаки + и – для обозначения большего и меньшего.

find -name «file-sample*» -atime -5

find -name «file-sample* -amin -5

Объедините FIND с другими командами Linux

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

.

Похожие сообщения:


18.01.2022