Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Linux как найти файл по имени


Команда find в Linux | Losst

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

В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.

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

Основная информация о Find

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

Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.

Команда find имеет такой синтаксис:

find [папка] [параметры] критерий шаблон [действие]

Папка - каталог в котором будем искать

Параметры - дополнительные параметры, например, глубина поиска, и т д

Критерий - по какому критерию будем искать: имя, дата создания, права, владелец и т д.

Шаблон - непосредственно значение по которому будем отбирать файлы.

Основные параметры команды find

Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.

  • -P никогда не открывать символические ссылки
  • -L - получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
  • -maxdepth - максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
  • -depth - искать сначала в текущем каталоге, а потом в подкаталогах
  • -mount искать файлы только в этой файловой системе.
  • -version - показать версию утилиты find
  • -print - выводить полные имена файлов
  • -type f - искать только файлы
  • -type d - поиск папки в Linux

Критерии

Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.

  • -name - поиск файлов по имени
  • -perm - поиск файлов в Linux по режиму доступа
  • -user - поиск файлов по владельцу
  • -group - поиск по группе
  • -mtime - поиск по времени модификации файла
  • -atime - поиск файлов по дате последнего чтения
  • -nogroup - поиск файлов, не принадлежащих ни одной группе
  • -nouser - поиск файлов без владельцев
  • -newer - найти файлы новее чем указанный
  • -size - поиск файлов в Linux по их размеру

Примеры использования

А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.

1. Поиск всех файлов

Показать все файлы в текущей директории:

find

find .

find . -print

2. Поиск файлов в определенной папке

Показать все файлы в указанной директории:

find ./test

Искать файлы по имени в текущей папке:

find . -name "*.jpg"

Не учитывать регистр при поиске по имени:

find . -iname "test*"

3. Ограничение глубины поиска

Поиска файлов по имени в Linux только в этой папке:

find . -maxdepth 1 -name "*.php"

4. Инвертирование шаблона

Найти файлы, которые не соответствуют шаблону:

find . -not -name "test*"

5. Несколько критериев

Поиск командой find в Linux по нескольким критериям, с оператором исключения:

find . -name "test" -not -name "*.php"

Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:

find -name "*.html" -o -name "*.php"

6. Несколько каталогов

Искать в двух каталогах одновременно:

find ./test ./test2 -type f -name "*.c"

7. Поиск скрытых файлов

Найти скрытые файлы:

find ~ -type f -name ".*"

8. Поиск по разрешениям

Найти файлы с определенной маской прав, например, 0664:

find . type f -perm 0664

Найти файлы с установленным флагом suid/guid:

find / -perm 2644

Или так:

find / -maxdepth 2 -perm /u=s

Поиск файлов только для чтения:

find /etc -maxdepth 1 -perm /u=r

Найти только исполняемые файлы:

find /bin -maxdepth 2 -perm /a=x

9. Поиск файлов по группах и пользователях

Найти все файлы, принадлежащие пользователю:

find . -user sergiy

Поиск файлов в Linux принадлежащих группе:

find /var/www -group developer

10. Поиск по дате модификации

Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:

 find / -mtime 50

Поиск файлов в Linux открытых N дней назад:

find / -atime 50

Найти все файлы, модифицированные между 50 и 100 дней назад:

find / -mtime +50 –mtime -100

Найти файлы измененные в течении часа:

find . -cmin 60

11. Поиск файлов по размеру

Найти все файлы размером 50 мегабайт:

find / -size 50M

От пятидесяти до ста мегабайт:

find / -size +50M -size -100M

Найти самые маленькие файлы:

find . -type f -exec ls -s {} \; | sort -n -r | head -5

Самые большие:

find . -type f -exec ls -s {} \; | sort -n | head -5

12. Поиск пустых файлов и папок

find /tmp -type f -empty

$ find ~/ -type d -empty

13. Действия с найденными файлами

Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, выполнить ls для получения подробной информации о каждом файле:

find . -exec ls -ld {} \;

Удалить все текстовые файлы в tmp

find /tmp -type f -name "*.txt" -exec rm -f {} \;

Удалить все файлы больше 100 мегабайт:

find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \;

Выводы

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

Оцените статью:

Загрузка...

Поиск файлов в Linux или Изучаем команду find

Автор: Нагибин Владимир. Дата статьи: 26.03.2010 г.

Несомненно, при работе с Linux, иногда возникает необходимость поиска файлов с определенными характеристиками. Этими характеристиками могут быть размер или тип файла, права доступа и другое.

Наличие в Linux команды find, во многом помогает справиться с поиском файлов по различным критериям.

Сегодня мы разберем поиск файлов в Linux и приведем основные опции команды find, которые вы сможете применить в своей работе.


Формат команды find:

find путь -опции

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

.    - поиск в текущем каталоге;

/   - поиск от корневого каталога;

~  - поиск в домашнем каталоге.

Что до опций, то тут гораздо бОльший список, с которым крайне необходимо внимательно ознакомиться (это в будущем очень поможет!). Итак, основные опции команды find:

-name         -  поиск файлов по имени, используя приведенный шаблон;

-user           -  поиск файлов, принадлежащих указанному пользователю;

-group        -  поиск файлов, принадлежащих указанной группе;

-perm         -  поиск файлов с указанным режимом доступа;

-type          -  поиск файлов определенного типа. Типов тоже достаточно:


  • b  - специальный блочный файл;

  • d  - каталог;

  • c  - специальный символьный файл;

  • f   - обычный файл;

  • l   - символическая ссылка;

  • p  - именованный канал;

  • s  - сокет.


-size  n       -  поиск файлов с размером n единиц;

-mtime  -n n   - поиск файлов, содержание которых изменялось менее чем (-) или более чем ( ) дней назад.

Рассмотрим некоторые примеры применения команды find:

Наиболее часто применяемой опцией является опция -name, которая производит поиск файлов по имени.

Примеры с опцией -name:

 $ find /mnt/usb -name  "*.mp3" -print

произведет поиск всех файлов (об этом свидетельствует знак *), имеющих расширение .mp3 на USB-устройстве, смонтированном в каталог /mnt/usb.

команда

$ find ~ -name "test*" -print

выведет на экран список файлов домашнего каталога, начинающихся на test.

Если вам надо найти файлы, начинающиеся с определенных букв (к примеру, от a до j),  то здесь будет удобно применить регулярные выражения, которые крайне удобны в работе:

$ find  / -name "[a-j]*" -print

Вышеуказанная команда позволит отыскать все файлы в системе, начинающиеся с букв от a до j.

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

Если потребуется найти файлы, имеющие определенные режимы доступа, вам поможет опция -perm, которая легко в этом поможет.

К примеру, выполним поиск файлов с режимом доступа 775  (владелец и группа имеют полные права и ограничение на запись имеют остальные пользователи), находящихся в текущем каталоге :

$ find .  -perm 775 -print

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

К примеру, найдем файлы,  к которым пользователи группы имеют полный доступ:

$ find . -perm -070 -print

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

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

Поиск файлов какого-либо определенного пользователя крайне прост в своей реализации. Для этого достаточно выполнить команду:

$ find / -user admin -print

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

Для того, чтобы найти файлы, принадлежащие определенной группе (к примеру managers), выполним команду:

$ find / -group managers -print

Для поиска файлов несуществующих пользователей или групп можно воспользоваться опциями -nouser  и -nogroup:

$ find / -nouser -print

и

$ find / -nogroup -print

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

Одной из удобных возможностей команды find, является возможность поиска файлов определенного типа. Рассмотрим варианты использования опции -type:

Поиск символических ссылок в каталоге /etc:

$ find /etc -type l -print

Вывод на экран списка каталогов, присутствующих в каталоге /mnt/raid

$ find /mnt/raid -type d -print

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

Опция -size позволяет произвести поиск файлов определенного размера и имеет следующий вид при выполнении:

$ find . -size 2000k -print

Вышеуказанная команда отыщет и отобразит на экране файлы размером 2 мегабайта, находящийся в текущем каталоге. Если, к примеру,  необходимо найти файлы размером менее 500 килобайт, то вид команды будет следующий:

$ find . -size -500k -print

Если нужно найти файлы размером более 600 мегабайт, то применим команду:

$ find / -size 600M -print

Поиск файлов с использованием опции -mtime

Опция -mtime позволит вам найти файлы, изменявшиеся в какой-то срок времени.

К примеру, у нас встала задача поиска файлов, находящихся в каталоге /mnt/raid/upload , и изменявшихся за последние 5 дней. В этом нам поможет команда:

$ find /mnt/raid/upload -mtime -5 -print

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

$ find /mnt/raid/upload  -7 -print

Команда find является крайне удобным инструментом для поиска файлов и может использоваться также и для поиска файлов на дисках NFS (сетевых файловых системах), но в этом случае необходимо учесть, что времени на поиск чего-либо на NFS уйдет гораздо больше, чем на локальных дисках.

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

Поиск файла в Linux | Losst

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

В Linux существует множество способов поиска, как в графическом интерфейсе, так и через командную строку. В сегодняшней статье мы разберём, как выполнять поиск файла в Linux с помощью всех этих средств. Но начнём с программ, у которых есть графический интерфейс.

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

Поиск файла в Linux через графический интерфейс

1. Главное меню системы

Главное меню операционной системы позволяет, как правило, не только запускать программы, но и искать их, а также искать файлы. Такая возможность есть как в Gnome, так и в KDE. В главном меню Gnome вы можете ввести нужную фразу для поиска:

Но у такого поиска есть значительный недостаток. Он рассчитан больше на поиск программ, а не на поиск файлов, поэтому ищет только в домашней папке и не углубляется далеко в файловую систему.

2. Файловые менеджеры

Большинство файловых менеджеров тоже предоставляют возможности поиска файлов, в том числе Dolphin и Nautilus. Здесь вы можете выбрать папку, в которой будет выполняться поиск, а также настроить дополнительные параметры поиска. В Nautilus для запуска поиска вам достаточно нажать кнопку со значком лупы, а потом ввести данные в строку поиска. Например, найдём все фото, сделанные 18 ноября.

Открыв стрелочку дополнительных параметров можно выбрать период, за который был создан интересующий нас документ, а также тип документа.

В качестве поискового запроса можно использовать символы подстановки: ? и *. Но для более точного поиска придётся использовать сторонние программы.

3. Gnome Search

Утилита Gnome Search по умолчанию поставляется не всегда, но вы можете установить её из центра приложений или через официальные репозитории. Она предоставляет такие же возможности, как и файловый менеджер, плюс здесь можно искать по содержимому файлов, что иногда очень удобно.

 

4. SearchMonkey

Следующая программа в нашем списке - SearchMonkey. Она позволяет искать файлы по регулярным выражениям. Здесь тоже можно выполнять поиск файла, как по имени, так и по содержимому фала, можно выбрать диапазон дат и так далее. Но основное преимущество этой программы - возможность везде использовать регулярные выражения.

5. Recoll

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

sudo apt install recoll

Сразу же после запуска она предложит вам создать индекс документов, которые есть в вашем домашнем каталоге.

И только после создания индекса вы сможете выполнять по нему поиск. Далее, вам будет достаточно ввести запрос, например Wi-Fi, и вы увидите все файлы, которые содержат это слово с примерами вхождений, отсортированные по релевантности:

Для работы с большим количеством текстовых данных это может быть очень удобно. Программа понимает множество офисных форматов, среди которых pdf, djvu, doc, docx, odf, а также умеет находить такие файлы в архивах.

Поиск файлов в Linux через терминал

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

1. find

Самая часто используемая команда поиска файла в Linux на данный момент - это find. Она имеет множество возможностей: вы можете искать файлы по имени, дате изменения, создания, использовать регулярные выражения и маски, выполнять определённые действия для найденных файлов, настраивать глубину поиска и многое другое. Например, найдем все файлы, которые начинаются на "Снимок" в папке ~/Изображения:

find ~/Изображения -iname "Снимок*"

Более подробную информацию об этой команде читайте в статье команда find.

2. locate

Команда locate считается устаревшей и уже была удалена из многих дистрибутивов. Она выполняет поиск не в реальном времени, как find, а по ранее созданной базе файлов, но она делает только поиск файла по имени Linux. Вы вводите слово, которое вас интересует, и утилита выдаёт все известные ей файлы, имя которых содержит такое слово. Возможно использовать регулярные выражения. Например, найдем все файлы, в имени которых содержится passwd:

locate passwd

Обратите внимание, что если файл был добавлен после создания базы, то он найден не будет.

3. grep

Утилита grep позволяет не только фильтровать вывод других команд, но и искать по содержимому файловой системы. Для этого достаточно использовать опцию -r и указать папку, в которой надо искать текст. Например, найдём все файлы в /etc/, которые содержат строчку error_reporting:

sudo grep -r "error_reporting" /etc/

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

4. whereis

Утилита whereis достаточно простая и решает только одну задачу. Она показывает, где находится исполняемый файл, переданной ей программы. Например, если мы хотим узнать, где лежит grep, достаточно выполнить:

whereis grep

Выводы

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

Поиск файла в операционной системе Линекс с помощью команды "linux find"

Управление и взаимодействие с операционной системой Линукс основано на командах. Сегодня есть и графические интерфейсы в различных дистрибутивах, но их использование не научит человека компьютерному мышлению и не разовьет память. Именно поэтому при переходе на любую Unix-подобную операционную систему, необходимо учиться писать запросы и команды в терминале. Это значительно сокращает поиск нужных данных и выполнение расчетов. Одной из самых популярных команд является «find». Необходимо подробно рассмотреть, как осуществляется в Linux поиск файла с ее помощью.

Основные опции команды Linux find

Очень часто в процессе работы появляется необходимость найти тот или иной файл (папку). Часто даже название файла забываются, поэтому приходиться выполнять поиск по другим критериям: правам доступа, размеру, типа файла и его расширению. Специально для этих целей и придумана команда find. Она позволяет выполнять поиск файла или папки в Linux по имени, а также создавать различные запросы для файловой системы и жесткого диска для нахождения нужных данных. Преимуществом использования данной команды становится возможность не только выполнять поиск по всем каталогам, созданным в операционной системе, но в отдельных указанных папках.

Пример использования

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

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

Разница между locate и find Линукс

Многие новички часто спрашивают, почему в операционной системе Линукс есть две одинаковые команды: locate и find, ведь выполняют они одни и те же действия. Зачем использовать одну, если есть другая, и наоборот.

На самом деле, различия есть, и они весьма существенные. Цель команд одна – найти файл по заданным характеристикам или имени, а вот работают они по-разному. В случае с find поиск выполняется в реально существующей системе. Он более медленный, но его результаты всегда актуальны. К тому же, у find больше опций.

Команда locate делает все то же самое, но использует для поиска базу данных, которая была создана ранее (командой updatebd). Процедура нахождения файла или папки выполняется быстрее, но системе приходится пользоваться «старой» базой данных и искать имена или их части.

Для поиска по имени в Linux используют find name

Как найти все файлы только для чтения

Как уже было сказано, команда find более многофункциональна, чем locate. Она может выполнять поиск по операционной системе и жесткий дискам, руководствуюсь в качестве параметров и фильтров разрешениями, выданными конкретному пользователю (его учетной записи). Для этого используются специальные маски прав в восьмеричной и других системах исчисления. К примеру, для нахождения данных с маской прав 0664, необходимо выполнить команду «$find . type f -perm 0664» без кавычек (они добавлены для удобства отображения команд).

Для поиска файлов с установленными флагами suid/guid выполняют такую строку «$find / -perm 2644». А вот поиск файлов, которые доступны только для чтения, выглядит следующим образом: «$ find /etc -maxdepth 1 -perm /u=r».

Важно! Исполняемые файлы имеют такие же разрешения и по ним удобно проводить поиск. Пользуясь масками команды find, а не поиском по расширению. Для нахождения только исполняемых файлов прописывают и выполняют «$find /bin -maxdepth 2 -perm /a=x».

Найти файлы, к которым был получен доступ определённое время назад

Есть возможность также воспользоваться специальным атрибутом, позволяющим выполнять поисковые работы по файлам, которые были открыты или отредактированы последний раз определенное время назад. В качестве единицы измерения времени выступает «день», который добавляется в качестве значения к атрибуту –atime. Команда выглядит так: «find / -atime 34» и ищет данные, доступ к которым осуществлялся ровно 34 дня назад.

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

Если данных найдено слишком много и они расположены в списке немного не так, как нужно для того, чтобы поиск нужных файлов был комфортным, то есть возможность предварительно  отсортировать результаты по времени. Для этого в команду добавляют параметр printf и пользуются программой sort. Выглядит это примерно так: «$ find /path/to/search -printf «%T+\t%p\n» | sort». Это будет упорядочивать данные от самых старых к самым новым. Чтобы поменять порядок добавляют ключ r: «$ find /path/to/search -printf «%T+\t%p\n» | sort r»

Найти файл на основе имени пользователя

В Linux найти файл по его владельцу или группе владельцев крайне просто. Для этого понадобится все та же команда. Для того чтобы искать все файлы с названием 1221.txt в корневом каталоге, принадлежащем пользователю с именем root, необходимо прописать «find / -user root -name 1221.txt».

Процедура использования locate мало чем отличается от find

Как отправить выход команде find в Linux

Проблема поиска через терминал состоит в том, что иногда файлов слишком много и выводится большой перечень результатов. Просмотреть их все порой не хватает сил. Вывод строки можно перенаправить tail или выводить результаты вы файл: «find / -name *.mp3 -fprint nameoffiletoprintto».

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

Простой рекурсивный поиск документов и данных в операционной системе Линукс может осуществляться без каких-либо дополнительных параметров. К примеру, чтобы найти документ по имени config в корневой папке, необходимо прописать «find / -name config –print».

Фильтрация файлов по глубине

По глубине ищут в тех случаях, когда документы точно находятся в каталогах, которые «лежат» в других папках. К примеру, каждый каталог (а всего их путь будет три уровня) содержит 10 файлов и 10 других подпапок Для создания подобной структуры необходимо выполнить команды:

cd

mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}

touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}

cd ~/test

Далее можно искать по имени (find -name file1) или выполнить фильтрацию по глубине (find -maxdepth 2 -name file1).

Работа с найденными файлами

Для того чтобы выполнять действия над найденными документами применяется find exec Linux. Чтобы получить подробную информацию по каждому результату, выполняют «$find . -exec ls -ld {} \;». Для удаления все текстовых типов во временную папку прописывают «$find /tmp -type f -name «*.txt» -exec rm -f {} \;». А для того чтобы, к примеру, удалить все данные, больше 50 мегабайт в объеме, выполняют «$ find /home/bob/dir -type f -name *.log -size +5M -exec rm -f {} \;».

Применение опции exec

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

find Linux команда - синтаксис и примеры

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

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

Синтаксис

"find"- это одна из самых популярных и особенно важных утилит, которая устанавливается в операционной системе Линукс. Такая команда дает возможность быстро находить различные файлы и каталоги путем использования специальных условий. Она ищет требуемые данные по разрешению, собственнику, группе, объему, типу и иным условиям.

Данная утилита установлена «по умолчанию» в каждом дистрибутиве ОС Linux. Пользователю нет необходимости монтировать на ПК какие-либо дополнительные пакеты. Такая особенность позволяет максимально эффективно пользоваться командными строками.

Рассмотрим синтаксис:

find [директория] [опции][критерии поиска](операторы) [действия]

Здесь:

  • Директория. Это путь, где поиск ищет требуемую информацию.
  • Опции. Здесь можно ввести дополнительные аргументы, а также настроить глубину.
  • Критерий. Перед поиском требуется определиться с критерием, с помощью которого будут найдены данные. К критериям относится имя файла, дата его создания, владелец, права и многое другое.
  • Операторы. Используются для объединения критериев поиска.
  • Действия. Устанавливаются предварительно. С их помощью отбираются нужные файлы.

Основные опции:

  • -L - опция указывает, что нужно переходить по символическим ссылкам.
  • -P - указывает, что по символическим ссылкам не переходить.
  • -depth или -d - искать в директории в которой находишься, а также в подкаталогах.
  • -print - выводить на экран полные имена документов.
  • -type d - опция type показывает какой тип искать, буква d указывает на каталоги.
  • --type f - буква f указывает на поиск файлов.
  • -version - информация о версии утилиты.

Основные критерии:

  • -size - размер.
  • -name - искать по имени.
  • -group - искать по группе.
  • -nogroup - файлы, которые не относятся ни к одной группе.
  • -mtime - поиск по дате изменения документа.
  • -atime -  искать по дате чтения.
  • -user - владелец документа.

ВАЖНО! Критерии можно объединять используя операторы.

Операторы:

  • -and - и.
  • -or - или.
  • -not - отрицание.

Действия:

  • -exec команда \; - запустить команду
  • -ls - выполнить ls.

Примеры

Утилита, которая имеется практически во всех версиях Линукс, дает возможность быстро найти требуемую информацию. Для этих целей предварительно вводятся критерии поиска. Пользоваться командой можно по-разному, так как у нее много опций.  Рассмотрим примеры.

Список папок и файлов директории

Чтобы вывести все списки файлов, потребуется набрать название команды без параметров.

find

Имеется и альтернативный вариант – "find .".

Для обнаружения файлов в конкретной директории требуется в терминале набрать название утилиты и путь. Например /var/log

find /var/log

Искать в домашнем каталоге пользователя

Чтобы найти именно те файлы, которые относятся к определённому пользователю, нужно ввести команду

find. -user file

Дата модификации

Чтобы найти документы по дате, необходимо использовать критерии "mtime, atime".

  • mtime - модификация.
  • atime - чтение.

Найдем все файлы в каталоге /home, которые открывались 120 дней назад.

find /home -atime 120

Почти тоже самое будет, если нужно найти документы, которые изменялись 120 дней назад.

find /home -mtime 120

Поиск файла в директории с помощью критерия «по имени»

Чтобы найти файл по имени в требуемой директории необходимо использовать опцию "-name".

find /var/log -name "test.log"

Она в считанные секунды найдет файл «test.log». Одновременно с этим, будут показаны все данные, имеющие расширение «.log».

Поиск файлов определённого размера

Если требуется найти файл, размер которого известен пользователю, вводится -size с указанием размера.

find / -size -12M.

Поиск файлов определённом диапазоне размеров

Если пользователь знает ориентировочный размер документа, критерий также можно указать во время поиска.

find / -size +12M -size -25M

Действие

Выполним команду ls в каталоге run, для документов, которые изменялись 150 дней назад. Будем использовать действие "ls".

find /run -mtime 150 -type f -ls

Запустим утилиту ls, в каталоге home, для файлов больше 5000 байт.

find /home -size +5000c -type f -exec cat\;

Поиск документов в нескольких директориях

Чтобы выполнить такой поиск, необходимо вводить пути директорий через пробел. Например /var /home.

find /var /home -name "file.txt"

Она дает возможность найти файл с именем «file.txt» в директориях формата «/var» и «/home».

Без учета регистра, используя критерий «по имени»

Найдем документ test.txt без учета регистра в каталоге /home. Для этого, будем использовать "iname".

find /home -iname "test.txt"

В итоге на экране вашего монитора появятся файлы, имеющие название «test.txt». Их может быть более двух.

Поиск файлов, которые отличаются от упомянутых

Зачастую пользователю нужно найти определенные данные, которые отличаются от определённого типа файлов. Для этих целей необходимо использовать оператор "-not" для отрицания.

find /root -not -name "*.txt"

По большому количеству критериев

Во время установки параметров поиска можно вводить несколько признаков. К примеру, если требуется найти файлы, имеющие расширение «.txt» и «.html», нужно ввести команду

$ find /var -regex ".*\.\(txt\|html\)$"

Использование оператора

Допускается одновременное совмещение нескольких критериев. Система обнаружит информацию, которая будет удовлетворять одному из условий. Для этих целей потребуется использование одного из операторов or (или), and (и), not (отрицание не).

find /var/log/exim4 -name "*.txt" -оr -name "test*"

Права доступа

Чтобы найти документ с определенными правами, используется критерий поиск -perm.

find /var/log -type f -perm 777

Почти тоже самое будет для папок с правами 777.

find /var/log -type d -perm 777

Поиск документов, у которых есть право на исполнение.

find /var/log -type f -perm /a=x

Найдем файлы в каталоге run, у которых есть право читать.

find /run -perm /u=r

Ищем все скрытые файлы

Для обнаружения скрытых файлов в директории необходимо ввести:

find /etc -type f name ".*"

Поиск всех файлов группы

Чтобы найти файлы, которые относятся к определённой группе, необходимо указать аргумент "group".

find /run -group apache

Существует множество способов применения find. Выше описаны лишь некоторые примеры, которые демонстрируют широкую функциональность утилиты.

Как сделать поиск файлов в Linux

Во время работы в любой операционной системе иногда возникает потребность в использовании инструментов для быстрого поиска того или иного файла. Актуально это и для Linux, поэтому ниже будут рассмотрены все возможные способы поиска файлов в этой ОС. Представлены будут как инструменты файлового менеджера, так и команды, используемые в «Терминале».

Читайте также:
Переименовываем файлы в Linux
Создаем и удаляем файлы в Linux

Терминал

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

find путь опция

где путь — это директория, в которой будет происходить поиск. Есть три основных варианта указания пути:

  • / — поиск по корневой и прилегающим к ней директориям;
  • ~ — поиск по домашней директории;
  • ./ — поиск в директории, в которой пользователь находится в настоящий момент.

Также вы можете указать путь непосредственно к самому каталогу, в котором предположительно расположен файл.

Опций у find очень много, и именно благодаря им можно осуществить гибкую настройку поиска, задав необходимые переменные:

  • -name — проводить поиск, беря за основу имя искомого элемента;
  • -user — искать файлы, которые относятся к определенному пользователю;
  • -group — проводить поиск по определенной группе пользователей;
  • -perm — показывать файлы с указанным режимом доступа;
  • -size n — искать, беря за основу размер объекта;
  • -mtime +n -n — проводить поиск файлов, которые изменялись более (+n) или менее (-n) дней назад;
  • -type — искать файлы определенного типа.

Типов искомых элементов тоже много. Вот их список:

  • b — блочный;
  • f — обычный;
  • p — именованный канал;
  • d — каталог;
  • l — ссылка;
  • s — сокет;
  • c — символьный.

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

Читайте также: Популярные команды в «Терминале» Linux

Способ 1: Поиск по имени (опция -name)

Чаще всего пользователи для осуществления поиска по системе используют опцию -name, так что именно с нее и начнем. Разберем несколько примеров.

Поиск по расширению

Допустим, вам нужно найти в системе файл с расширением «.xlsx», который находится в директории «Dropbox». Для этого необходимо использовать следующую команду:

find /home/user/Dropbox -name "*.xlsx" -print

Из ее синтаксиса можно сказать, что поиск проводится в директории «Dropbox» («/home/user/Dropbox»), а искомый объект должен быть с расширением «.xlsx». Звездочка свидетельствует о том, что поиск будет проведен по всем файлам этого расширения, не беря во внимание их название. «-print» указывает на то, что результаты поиска будут выведены на экран.

Пример:

Поиск по имени файла

Например, вы хотите отыскать в директории «/home» файл с названием «lumpics», но расширение его неизвестно. В таком случае нужно выполнить следующее:

find ~ -name "lumpics*" -print

Как можно заметить, здесь используется символ «~», который означает, что поиск будет проходить в домашней директории. После опции «-name» указано имя искомого файла («lumpics*»). Звездочка в конце означает что поиск будет проходить только по имени, не учитывая расширение.

Пример:

Поиск по первой букве в имени

Если вы помните только первую букву, с которой начинается название файла, то существует специальный синтаксис команды, который вам поможет его отыскать. Например, вы хотите найти файл, который начинается с буквы от «g» до «l», и вы не знаете в каком каталоге он находится. Тогда вам необходимо выполнить следующую команду:

find / -name "[g-l]*" -print

Судя по символу «/», что идет сразу после основной команды, поиск будет проведен, начиная с корневого каталога, то есть во всей системе. Далее, часть «[g-l]*» означает, что искомое слово будет начинаться с определенной буквы. В нашем случае от «g» до «l».

К слову, если вы знаете расширение файла, то после символа «*» можете его указать. Например, вам надо найти тот же файл, но вы знаете, что он имеет расширение «.odt». Тогда можно использовать такую команду:

find / -name "[g-l]*.odt" -print

Пример:

Способ 2: Поиск по режиму доступа (опция -perm)

Иногда необходимо найти объект, имя которого вы не знаете, но знаете каким режимом доступа он обладает. Тогда вам нужно применять опцию «-perm».

Пользоваться ей довольно просто, нужно всего лишь указать место поиска и режим доступа. Вот пример такой команды:

find ~ -perm 775 -print

То есть поиск проводится в домашнем разделе, а искомые объекты будут обладать доступом 775. Также вы можете перед этим числом прописать символ «-», тогда найденные объекты будут иметь биты разрешений от нуля до указанного значения.

Способ 3: Поиск по пользователю или группе (опции -user и -group)

В любой операционной системе есть пользователи и группы. Если вы хотите найти объект, принадлежащий одной из этих категорий, то для этого можете использовать опцию «-user» или «-group», соответственно.

Поиск файла по имени его пользователя

Например, вам нужно найти в директории «Dropbox» файл «Lampics», но вы не знаете как он называется, а знаете только что он принадлежит пользователю «user». Тогда вам нужно выполнить следующую команду:

find /home/user/Dropbox -user user -print

В данной команде вы указали необходимую директорию (/home/user/Dropbox), указали что нужно искать файл, принадлежащий пользователю (-user), и указали, какому именно пользователю этот файл принадлежит (user).

Пример:

Читайте также:
Как посмотреть список пользователей в Linux
Как добавить пользователя в группу в Linux

Поиск файла по названию его группы

Выполнить поиск файла, который принадлежит определенной группе, точно так же просто — вам нужно всего-навсего заменить опцию «-user» на опцию «-group» и указать название этой группы:

find / -groupe guest -print

То есть вы указали, что хотите отыскать в системе файл, относящийся к группе «guest». Поиск будет происходить по всей системе, об этом свидетельствует символ «/».

Способ 4: Поиск файла по его типу (опция -type)

Найти какой-то элемент в Linux определенного типа довольно просто, вам нужно всего лишь указать соответствующую опцию (-type) и обозначить тип. В начале статьи были перечислены все обозначения типов, которые можно применять для поиска.

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

find ~ -type b -print

Соответственно, вы указали что проводите поиск по типу файла, о чем свидетельствует опция «-type», а далее определили его тип, поставив символ блочного файла — «b».

Пример:

Точно так же вы можете вывести на экран все каталоги в нужной директории, вписав в команду символ «d»:

find /home/user -type d -print

Способ 5: Поиск файла по размеру (опция -size)

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

find /home/user/Dropbox -size 120M -print

Пример:

Читайте также: Как узнать размер папки в Linux

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

find / -size 120M -print

Пример:

Если вы знаете размер файла приблизительно, то и на этот случай есть специальная команда. Вам нужно прописать в «Терминале» то же самое, только перед указанием размера файла поставить знак «-» (если нужно найти файлы меньше указанного размера) или «+» (если размер искомого файла будет больше указанного). Вот пример такой команды:

find /home/user/Dropbox +100M -print

Пример:

Способ 6: Поиск файла по дате изменения (опция -mtime)

Бывают случаи, когда удобнее всего проводить поиск файла по дате его изменения. В Linux для этого применяется опция «-mtime». Пользоваться ей довольно просто, рассмотрим все на примере.

Допустим, в папке «Изображения» нам нужно найти объекты, которые подвергались изменениям последние 15 суток. Вот что нужно прописать в «Терминале»:

find /home/user/Изображения -mtime -15 -print

Пример:

Как можно заметить, эта опция показывает не только файлы, изменявшиеся за указанный срок, но и папки. Работает она и в обратную сторону — вы можете найти объекты, которые были изменены позже указанного срока. Для этого нужно перед цифровым значением вписать знак «+»:

find /home/user/Изображения -mtime +10 -print

GUI

Графический интерфейс во многом облегчает жизнь новичкам, которые только установили дистрибутив Linux. Данный метод поиска очень похож на тот, что осуществляется в ОС Windows, хотя и не может дать всех тех преимуществ, что предлагает «Терминал». Но обо всем по порядку. Итак, рассмотрим, как сделать поиск файлов в Linux, используя графический интерфейс системы.

Способ 1: Поиск через меню системы

Сейчас будет рассмотрен способ поиска файлов через меню системы Linux. Проводимые действия будут выполняться в дистрибутиве Ubuntu 16.04 LTS, однако инструкция общая для всех.

Читайте также: Как узнать версию дистрибутива Linux

Допустим, вам необходимо найти в системе файлы под именем «Найди меня», также этих файлов в системе два: один в формате «.txt», а второй — «.odt». Чтобы их отыскать, необходимо изначально нажать на иконку меню (1), и в специальном поле для ввода (2) указать поисковый запрос «Найди меня».

Отобразится результат поиска, где будут показаны искомые файлы.

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

Расположен он в правой части меню. Фильтровать вы можете по двум критериям: «Категории» и «Источники». Разверните эти два списка, нажав по стрелочке рядом с названием, и в меню уберите выделения с ненужных пунктов. В данном случае разумнее будет оставить лишь поиск по «Файлы и папки», так как мы ищем именно файлы.

Сразу можно заметить недостаток этого способа — нельзя детально настроить фильтр, как в «Терминале». Так, если вы ищите текстовый документ с каким-то названием, в выдаче вам могут показать картинки, папки, архивы и т. п. Но если вы знаете точное наименование нужного файла, то сможете быстро отыскать его, не изучая многочисленные способы команды «find».

Способ 2: Поиск через файловый менеджер

Второй способ имеет существенное преимущество. Используя инструмент файлового менеджера, можно произвести поиск в указанном каталоге.

Выполнить данную операцию проще простого. Вам необходимо в файловом менеджере, в нашем случае Nautilus’е, войти в папку, в которой предположительно находится искомый файл, и нажать кнопку «Поиск», расположенную в верхнем правом углу окна.

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

Как и в предыдущем способе, в этом точно так же можно использовать фильтр. Для его открытия нажмите на кнопку со знаком «+», расположенную в правой части поля ввода поискового запроса. Откроется подменю, в котором вы можете из выпадающего списка выбрать искомый тип файла.

Заключение

Из всего вышесказанного, можно сделать вывод, что для проведения быстрого поиска по системе отлично подойдет второй способ, завязанный на использовании графического интерфейса. Если же необходимо задать множество параметров поиска, то незаменимой будет команда find в «Терминале».

Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ

Как найти файл в Linux с помощью команды поиска

перейти к содержанию Поиск Меню
  • Windows
  • Linux
  • Mac
  • Интернет
  • Android
  • iOS
  • Подробнее
    • Руководства по аппаратному обеспечению
    • Chrome OS
    • Гаджеты
    • Как все работает
    • Обзор продукта
    • Умный дом
    • Игры
  • О компании
    • О нас
    • Свяжитесь с нами
.

Как найти файлы и каталоги в Linux

Обновлено: 07.03.2020, Computer Hope

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

Базовая функциональность find

Запуск find без каких-либо опций создает список всех файлов и каталогов внутри и ниже рабочего каталога. Например, если ваш рабочий каталог - / home / hope / Documents , запуск find выводит следующее:

  • Каждый файл в / home / hope / Documents .
  • Все подкаталоги в / home / hope / Documents .
  • Каждый файл в каждом из этих подкаталогов.

Посмотрим, как это работает. Сначала давайте проверим наш рабочий каталог с помощью команды pwd:

 pwd 
 / на главную / надежда / Документы 

Теперь давайте запустим find без опций:

 найти 
. ./изображений ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

В этом примере мы видим в общей сложности десять файлов и четыре подкаталога в нашей папке Documents и ниже.

Обратите внимание, что выходные данные начинаются с одной точки, которая представляет рабочий каталог. Запуск find без параметров - это то же самое, что указание того, что поиск должен начинаться в рабочем каталоге, например:

 находка.

Пример выше - «правильный» способ использования find . Если вы попытаетесь использовать его в другой Unix-подобной операционной системе, такой как FreeBSD, необходимо указать каталог. Хорошая практика - использовать эту форму команды.

Указание, где искать

Чтобы вывести список только файлов и подкаталогов, содержащихся в каталоге / home / hope / Documents / images , укажите первый аргумент команды как:

 найти / главная / надежда / документы / изображения 
 / главная / надежда / Документы / изображения / home / hope / Documents / images / hp / главная / надежда / документы / изображения / hp / snape.jpg /home/hope/Documents/images/hp/harry.jpg / главная / надежда / Документы / изображения / мемы /home/hope/Documents/images/memes/winteriscoming.jpg /home/hope/Documents/images/memes/goodguygary.JPG /home/hope/Documents/images/memes/picard.jpg 

Обратите внимание, что в результатах также отображается полный путь.

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

 наход. / Изображения 

Но на этот раз вывод отражает начальную точку поиска и выглядит так:

./изображений ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg 

По умолчанию поиск просматривает все подкаталоги исходного местоположения. Если вы хотите ограничить количество уровней подкаталога для поиска, вы можете использовать параметр -maxdepth с номером.

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

 находка. -максглубина 1 
. ./изображений ./bigfiles.txt ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./archlinux-2016.02.01-dual.iso 

Указание -maxdepth 2 ищет каталог и один подкаталог в глубине:

 находка. -максглубина 2 
. ./изображений ./images/hp ./images/memes ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.док ./archlinux-2016.02.01-dual.iso 

Указание -maxdepth 3 поиск на один уровень глубже этого:

 находка. -максглубина 3 
. ./изображений ./images/hp ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

Нахождение по названию

Чтобы ограничить результаты поиска соответствием только файлам и каталогам с определенным именем, используйте параметр -name и поместите имя в кавычки:

 находка. -name "picard.jpg" 
 ./images/memes/picard.jpg 

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

 находка.-name "* .jpg" 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/picard.jpg 

Обратите внимание, что наша команда не перечислила файл с расширением (в данном случае JPG ) заглавными буквами. Это потому, что в отличие от других операционных систем, таких как Microsoft Windows, имена файлов Linux чувствительны к регистру.

Чтобы вместо этого выполнить поиск без учета регистра, используйте параметр -iname :

 находка. -iname "*.jpg "
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg 

Поиск только файлов или только каталогов

Чтобы перечислить только файлы и исключить имена каталогов из результатов, укажите -type f :

 находка. -типа f 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg ./gimp-2.8.16.tar.bz2 ./hp-fanfic/malfoys-revenge.doc ./hp-fanfic/weekend-at-hagreds.doc ./hp-fanfic/dumbledores-lament.doc ./archlinux-2016.02.01-dual.iso 

Чтобы перечислить только каталоги и опустить имена файлов, укажите -type d :

 находка. -типа d 
. ./изображений ./images/hp ./images/memes ./hp-fanfic 

Поиск файлов по размеру

Чтобы отображать только файлы определенного размера, вы можете использовать параметр -размер . Чтобы указать размер, используйте знак плюс или минус (для «больше чем» или «меньше чем»), число и количественный суффикс, например k , M или G .

Например, чтобы найти файлы размером "более 50 килобайт", используйте -size + 50k :

 находка. -размер + 50к 
 ./images/memes/winteriscoming.jpg ./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso 

Для файлов размером более 10 мегабайт используйте -size + 10M :

 находка. -размер + 10М 
 ./gimp-2.8.16.tar.bz2 ./archlinux-2016.02.01-dual.iso 

Для «более 1 гигабайта» используйте -size + 1G :

 находка.-размер + 1G 
 ./archlinux-2016.02.01-dual.iso 

Для файлов определенного диапазона размеров используйте два параметра -size . Например, чтобы найти файлы «больше 10 мегабайт, но меньше 1 гигабайта», укажите -размер + 10M -размер -1G :

 находка. -размер + 10M -размер -1G 
 ./gimp-2.8.16.tar.bz2 

Поиск файлов на основе модификации, доступа или изменения статуса

Параметр -mtime ограничивает поиск количеством дней с момента изменения содержимого файла.Чтобы указать дни в прошлом, используйте отрицательное число. Например, чтобы найти только те файлы, которые были изменены за последние два дня (48 часов назад), используйте -mtime -2 :

 находка. -mtime -2 

Параметр -mmin делает то же самое, но в минутах, а не в днях. Например, эта команда показывает только файлы, измененные за последние полчаса:

 находка. -ммин -30 

Аналогичная опция - -ctime , которая проверяет время последнего изменения статуса файла в днях.Изменение статуса - это изменение метаданных файла. Например, изменение прав доступа к файлу - это изменение статуса.

Параметр -cmin выполняет поиск изменения состояния, измеряемого в минутах.

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

Параметр -amin выполняет то же ограничение поиска, но измеряется в минутах.

Перенаправление вывода в текстовый файл

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

 находка. -iname "* .jpg"> images.txt 

Затем вы можете открыть свои результаты в текстовом редакторе или распечатать их с помощью команды cat .

 кот images.txt 
 ./images/hp/snape.jpg ./images/hp/harry.jpg ./images/memes/winteriscoming.jpg ./images/memes/goodguygary.JPG ./images/memes/picard.jpg 

В качестве альтернативы вы можете передать свой вывод команде tee , которая выводит вывод на экран и записывает его в файл:

 находка. размер + 500M | тройник bigfiles.txt 
 ./archlinux-2016.02.01-dual.iso 
 кот bigfiles.txt 
 ./archlinux-2016.02.01-dual.iso 

Подавление сообщений об ошибках

При выполнении поиска может появиться сообщение об ошибке «В доступе отказано».Например, если вы выполняете поиск в корневом каталоге как обычный пользователь:

 найти / 
 найти: `/ var / lib / sudo / ts ': в доступе отказано find: `/ var / lib / sudo / lectured ': в доступе отказано find: `/ var / lib / polkit-1 ': в доступе отказано find: `/ var / lib / container ': в доступе отказано find: `/var/lib/gdm3/.dbus ': В доступе отказано find: `/var/lib/gdm3/.config/ibus ': В доступе отказано ... 

Вы получите это сообщение об ошибке, если find попытается получить доступ к файлу, на чтение которого у вашей учетной записи нет разрешения.Вы можете выполнить поиск как суперпользователь ( root ), который имеет полный доступ ко всем файлам в системе. Но не рекомендуется делать что-либо как root , если нет других вариантов.

Если все, что вам нужно сделать, это скрыть сообщения «Permission denied», вы можете добавить 2 и

.

debian - Как мне найти определенный файл в терминале Linux?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

находок - Community Help Wiki

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

Команда GNU find является частью GNU findutils и устанавливается в каждой системе Ubuntu. findutils фактически состоит из 4 утилит:

  1. find - поиск файлов в иерархии каталогов, независимо от того, является ли это база данных или нет

  2. найти - список файлов в базах данных, соответствующих шаблону, т.е.е. найти в списке updatedb

  3. updatedb - обновить базу данных имен файлов, то есть собрать только db , например sqlite

  4. xargs - создать и выполнить командные строки из стандартного ввода - обычно вы это делаете напрямую без xargs

Эта вики-страница будет иметь дело только с поиском, а также кратким упоминанием xargs. Надеюсь, что в ближайшем будущем locate и updatedb будут освещены на отдельной странице.«find», как и «locate», также может находить файлы базы данных, но «locate» более специализирован для этой задачи. Вы должны запустить updateb перед использованием locate, который полагается на данные, созданные "updateDB".

 find ~ -name readme.txt 

найдет этот файл под домашним каталогом. find работает невероятно быстро при втором запуске! Вы можете выполнить поиск по всему / корневому-каталогу всего за прибл. 3 секунды (при втором запуске, когда кэш активен) на жестком диске ext4-fs емкостью 500 ГБ.

Синтаксис для использования find:

 find [-H] [-L] [-P] [путь ...] [выражение] 

3 варианта [-H] [-L] [-P] не часто встречаются, но, по крайней мере, следует отметить, если только вы понимаете, что опция -P будет иметь значение по умолчанию , если не указан другой параметр:

  • -H: не переходить по символическим ссылкам, кроме как при обработке аргументов командной строки .
  • -L: переходите по символическим ссылкам.
  • -P: Никогда не переходить по символическим ссылкам: параметр по умолчанию.

Параметр [путь ...] относится к конкретному местоположению, в котором вы хотите выполнить поиск, будь то ваш каталог $ HOME, конкретный каталог, такой как / usr, ваш текущий рабочий каталог, который можно просто выразить как '. ' или весь ваш компьютер, что может быть выражено как '/'.

Параметр [выражение] относится к одному или ряду параметров, которые влияют на общий параметр команды поиска. Эти параметры могут включать поиск по имени, размеру, времени доступа или могут также включать действия, предпринимаемые с этими файлами.

Поиск файлов по имени

Чаще всего find используется для поиска определенного файла по его имени. Следующая команда выполняет поиск в домашнем каталоге и во всех его подкаталогах в поисках файла mysong.ogg:

 find $ HOME -name 'mysong.ogg' 

Важно выработать привычку цитировать шаблоны при поиске, как показано выше, иначе ваши результаты поиска могут быть немного непредсказуемыми. Однако такой поиск может быть гораздо более сложным.Например, если вы хотите найти всех файлов ogg в своем домашнем каталоге, некоторые из которых, по вашему мнению, могут называться «OGG», а не «ogg», вы должны выполнить:

 find $ HOME -iname '* .ogg '

Здесь опция' -iname 'выполняет поиск без учета регистра, в то время как подстановочный знак' * 'соответствует любому символу, количеству символов или нулю. Чтобы выполнить тот же поиск на всем диске , вы должны запустить:

 sudo find / -iname '*.ogg '

Это может быть медленным поиском в зависимости от количества каталогов, подкаталогов и файлов в вашей системе. Это подчеркивает важное различие в способе работы find, заключающееся в том, что он проверяет систему непосредственно каждый раз, в отличие от таких программ, как locate или slocate, которые фактически проверяют регулярно обновляемую базу данных имен файлов и местоположений.

Поиск файлов по размеру

Другой возможный поиск - поиск файлов размером .Чтобы продемонстрировать это, мы можем снова выполнить поиск файлов Ogg Vorbis в домашнем каталоге, но на этот раз искать те, которые имеют размер 100 мегабайт или больше:

 find $ HOME -iname '* .ogg' -size + 100M 

Есть несколько вариантов с -size, здесь я использовал «M» для «мегабайт», но можно использовать «k» для «килобайт» или «G» для «гигабайт». Затем этот поиск можно изменить для поиска файлов только тех, которые меньше , чем 100 мегабайт:

 find $ HOME -iname '* .ogg' -type f -size -100M 

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

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

Также возможно найти файлы по времени их доступа или времени, когда они в последний раз использовались или просматривались системой. Например, чтобы показать все файлы, к которым не было доступа в каталоге $ HOME в течение 30 или более дней:

 find $ HOME -atime +30 

Этот тип поиска обычно более полезен в сочетании с другими поисками find. Например, можно найти все файлы ogg в каталоге $ HOME, время доступа которых превышает 30 дней:

 find $ HOME -iname '*.ogg '-atime +30 

Синтаксис работает слева направо, и по умолчанию find объединяет 2 выражения с подразумеваемым «и». Более подробно это рассматривается в разделе «Объединение поисковых запросов» ниже.

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

Объединение результатов поиска

При использовании find можно комбинировать поиски с использованием того, что на страницах руководства find известно как операторы .Это

, как в

 find ~ -name 'xx *' -and -not -name 'xxx' 

, если вы не предпочитаете загадочный синтаксис ниже (-o вместо -or)

Классический пример: использование логического И синтаксиса:

 find $ HOME -iname '* .ogg' -size + 20M 

Этот поисковый поиск сначала выполняет поиск без учета регистра для всех файлов ogg в вашем каталоге $ HOME и для всех истинных результатов Затем он ищет те, размер которых составляет 20 мегабайт и более.Он содержит и подразумевает оператор, который можно записать вместе с -a . Этот поиск можно немного изменить, используя восклицательный знак для обозначения отрицания результата:

 find $ HOME -iname '* .ogg'! -size + 20M 

Выполняет тот же поиск, что и раньше, но ищет файлы ogg размером , а не больше 20 мегабайт. Также можно использовать логическое ИЛИ в поиске поиска:

 find $ HOME -iname '* .ogg' -o -iname '* .mp3' 

Это будет выполнять поиск без учета регистра в каталогах $ HOME и найти все файлы в формате ogg ИЛИ mp3.Здесь есть большие возможности для создания очень сложных и точно отточенных поисковых запросов, и я бы посоветовал внимательно прочитать справочные страницы find для поиска темы ОПЕРАТОРЫ.

Работа с файлами

Один продвинутый, но очень полезный аспект использования поиска - это возможность выполнять действие, указанное пользователем, над результатом поиска. Например, следующий поиск ищет все файлы ogg vorbis в каталоге $ HOME, а затем использует -exec для передачи результата в программу du, чтобы указать размер каждого файла:

 find $ HOME -name '*.ogg '-type f -exec du -h' {} '\; 

Этот синтаксис часто используется для удаления файлов с помощью -exec rm -rf , но его следует использовать с большой осторожностью, если вообще, поскольку восстановление любых удаленных файлов может быть довольно трудным.

Использование xargs

xargs <<< / ls

так же, как: ls /

xargs передает здесь строку / в качестве параметра («аргумент») команде ls

При использовании действительно сложного поиска часто бывает полезно идея использовать другой член пакета findutils: xargs.Без его использования можно было увидеть сообщение Список аргументов слишком длинный , сигнализирующий о превышении предела ядра на объединенную длину командной строки и ее переменных среды. xargs работает, передавая результаты поиска последующей команде в пакетах, рассчитанных с учетом возможностей системы (на основе ARG_MAX). Пример:

 find / tmp -iname '* .mp3' -print0 | xargs -0 rm 

В этом примере выполняется поиск всех файлов mp3 в папке / tmp, а затем их удаление.Обратите внимание на использование -print0 и xargs -0 , что является преднамеренной стратегией, позволяющей избежать проблем с пробелами и / или новой строкой в ​​именах файлов. Современные ядра не имеют ограничения ARG_MAX, но для сохранения переносимости поиска рекомендуется использовать xargs в сложном поиске с последующими командами.


КатегорияCommandLine

.

Как мне найти все файлы, содержащие определенный текст в Linux?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

linux - Как найти файлы, кроме заданного имени?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

Смотрите также