Знаете ли вы, сколько файлов содержится в новой установке 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?
.