Как найти файл по первой букве

Как найти файл по части имени

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

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

Рассмотрим все на простеньком примере, допустим есть какой-то список документов.

Поиск по части имени

И если в поиск набрать «коп» то поиск найдет все документы где в начале имени встречается это сочетание букв.

Как найти файл по части имени

А если набрать «пия» то поиск не даст результатов, так как по умолчанию введённое в поисковую строку сочетание букв или цифр будет искаться в начале имени файлов.

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

Для того чтобы найти файлы по части имени перед «пия» необходимо поставить звездочку «*», в этом случае в результатах отобразиться все файлы в имени которых встречается введённое сочетание символов.

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

Давайте рассмотрим еще один пример, есть файл именем «Лайфхаки», представим что мы помним только последнею часть «хаки».

Как найти файл

Поиск ничего не найдет, так как он будет искать по началу имени.

Как найти файл зная только часть имени файла

Для того чтобы поиск искал введённое сочетание во всем имени нужно поставить «*».

Как найти файл зная только часть имени

Вот так символ «*» помогает искать файлы зная только часть имени, на самом деле подобных символом несколько, есть например, «?» оно позволят искать один пропущенный знак, например, если ввести «к?т» то поиск покажет все файлы с именем «кот», «кит», «кат» и т.д. Так жесть есть символ «#», он делает тоже самое только в числах.

Содержание

  • Терминал
    • Способ 1: Поиск по имени (опция -name)
    • Способ 2: Поиск по режиму доступа (опция -perm)
    • Способ 3: Поиск по пользователю или группе (опции -user и -group)
    • Способ 4: Поиск файла по его типу (опция -type)
    • Способ 5: Поиск файла по размеру (опция -size)
    • Способ 6: Поиск файла по дате изменения (опция -mtime)
  • GUI
    • Способ 1: Поиск через меню системы
    • Способ 2: Поиск через файловый менеджер
  • Заключение
  • Вопросы и ответы

как сделать поиск файлов в 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» указывает на то, что результаты поиска будут выведены на экран.

Пример:

пример выполнения поиска в определенной директории по расширению файла в linux

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

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

find ~ -name "lumpics*" -print

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

Пример:

пример выполнения поиска файла в домашней директории в linux

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

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

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

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

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

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

Пример:

пример поиска файла по первой букве и его расширению в linux

Способ 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
Как добавить пользователя в группу в Linux

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

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

find / -groupe guest -print

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

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

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

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

find ~ -type b -print

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

Пример:

поиск блочных файлов с применением команды -type в терминале linux

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

find /home/user -type d -print

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

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

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

Пример:

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

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

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

find / -size 120M -print

Пример:

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

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

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

Пример:

поиск файла по размеру больше указанного в linux

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

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

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

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

Пример:

пример поиска файлов по дате последнего изменения при помощи команды find в linux

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

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

GUI

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

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

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

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

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

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

результаты поиска файлов проводимые через меню системы в linux

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

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

настройка фильтра в меню системы linux при поиске файлов

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

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

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

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

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

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

поиск файла по части его имени в файловом менеджере наутилус в linux

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

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

Заключение

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

Поиск файлов

Маска — это условие
(шаблон) для поиска файла с использованием
символов «*» и
«?». Знак «*» заменяет любое количество
символов в маске в пределах от 1 до 211,
знак «?» —
один произвольный символ или его
отсутствие.

Примеры создания
масок:

*.
* — поиск всех файлов из указанного
диапазона поиска;

*.doс
— поиск всех файлов с расширением dос;

???. * — поиск всех
файлов с именем не более чем из трех
символов;

а*. * — поиск всех
файлов, имена которых начинаются на
букву «а».

Чтобы осуществить
поиск объектов, необходимо в главном
меню Пуск
выбрать
команду Поиск,
появится
диалоговое окно Результат
поиска.

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

  • если нужно найти
    файлы и папки, выберите соответствующий
    пункт;

  • в
    поле Часть
    имени файла или имя файла целиком:
    (рис.
    11)
    ввести
    имя файла
    или задать маску поиска;

  • в поле Слово
    или фраза в файле:
    можно
    ввести фрагмент текста, который должен
    содержать искомый файл;

  • в поле Поиск
    в:
    выбрать
    диск, на котором будет проведен поиск;

  • с помощью
    дополнительных условий: Когда
    были произведены последние изменения?,
    Какой размер файла?, Дополнительные
    параметры
    можно
    найти файлы, которые были созданы или
    изменены в течение определенного
    периода времени; определить размер
    искомого файла;

  • щелкнуть на кнопке
    Найти.

Задания
для тренировки 9.
Поиск
файлов.

  1. На
    всем компьютере найти все файлы с
    расширением bmр.

  2. Скопировать из
    окна поиска два файла в папку под своей
    фамилией.

  1. На всем компьютере
    найти файлы с расширением txt,
    имя которых начинается на букву «г».

  1. Скопировать три
    файла в папку под своей фамилией.

  1. На всем компьютере
    найти файлы, в середине имени
    которых есть буквосочетание «st».

  1. Скопировать три
    файла в папку Письма.

  1. На
    всем компьютере найти файлы с расширением
    txt,
    размером не менее 5 Кб и созданные
    за последние шесть месяцев.

  1. Скопировать два
    файла в папку Письма.

  1. На всем компьютере
    найти файлы, в имени которых
    последняя или предпоследняя буква
    «d».

  1. Скопировать два
    файла в папку Письма.

Задания
для тренировки 10.
Удаление
файлов и папок.

  1. В папке Письма
    выделить
    два файла и удалить.

  2. Очистить содержимое
    папки Корзина.

Программа
Проводник
Рекомендации
к
выполнению заданий

Проводник — это
служебная программа, относящаяся к
категории диспетчеров файлов. Она
предназначена для навигации по файловой
структуре компьютера и ее обслуживания.
Проводник полностью внедрен в операционную
систему ^УшсЬлуз
ХР.
Окно программы Проводник имеет две
рабочие области: левую панель — панель
папок и
правую панель — панель содержимого.

Программу Проводник
можно запустить:

  1. с помощью команды
    контекстного меню кнопки Пуск, Проводник;

  2. с
    помощью команды Проводник контекстного
    меню значка Мой компьютер. Примечание.
    В
    операционной системе ^пкюамз
    ХР
    окно Проводника можно отобразить,
    непосредственно открыв любое окно,
    например папку Мои

документы,
в этом случае должна быть включена
кнопка Папки на
панели

инструментов
Обычные кнопки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

Она используется для поиска файлов и папок через командную строку Linux.

Команда find — одна из самых мощных и широко применимых команд. При этом она крайне объёмная и насчитывает более 50 опций, в которых легко запутаться, особенно в сочетании с командами exec или xargs.

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

Для этого разберём самые распространённые случаи практического применения команды find. Но для начала покажу вам синтаксис и принцип работы с командой.

Команда find в Linux

Общий синтаксис команды find выглядит так:

find [directory to search] [options] [expression]

Всё, что в квадратных скобках, указывать необязательно. А значит, выполнить команду find можно вообще без опций и параметров. Она выдаст список всех файлов и папок в текущем расположении. Мало полезного, да?

Так что давайте взглянем на параметры подробнее:

  • directory to search (папка поиска) — это расположение, с которого вы хотите начать поиск. Поиск по умолчанию рекурсивный и начинается с текущего расположения.
  • options (опции) содержит указание типа поиска: по имени, типу файла, времени изменения и так далее — тут может быть более 50 вариантов.
  • expression (выражение) содержит поисковый запрос. Если вы ищете файл по имени, параметр expression должен содержать имя файла. Если ищете файлы с именем, соответствующим заданному шаблону, поисковое выражение — это шаблон.

Приведу простой пример:

find . -type f -name myfile

Такая команда выполнит поиск файла (именно файла, не папки) с именем myfile в текущей папке и подпапках. Опция -type f сужает поиск до файлов. Точка (.) указывает на текущую папку.

Рассмотрим несколько примеров применения команды find.

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

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

find . -name SEARCH_NAME

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

Пример ниже — поиск файлов и папок с именем «mystuff»:

abhishek@LHB:~/Examples$ find -name mystuff
./new/mystuff
./mystuff

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

Если нужно искать только файлы, на помощь придёт опция type -f:

find . -type f -name SEARCH_NAME

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

abhishek@LHB:~/Examples$ find -type f -name mystuff
./mystuff

Если нужно найти папку, укажите тип type -d:

find . -type d -name SEARCH_NAME

Вот пример нашего поиска уже по папкам:

abhishek@LHB:~/Examples$ find -type d -name mystuff
./new/mystuff

Поиск без учёта регистра

Команда find по умолчанию учитывает регистр. Чтобы выполнить поиск по имени файла без учёта регистра, надо ввести опцию -iname вместо -name.

find . -type f -iname SEARCH_NAME

С поиском по папкам (type -d) это тоже работает.

abhishek@LHB:~/Examples$ find -iname mystuff
./new/mystuff
./MyStuff
./mystuff

Скриншот последних трёх примеров:

image

Поиск файлов по расширению (важно)

Одно из самых популярных применений команды find — поиск файлов определённого типа, то есть по заданному расширению.

Скажем, вы хотите найти все файлы С++ в текущих папках. Файлы С++ имеют расширение .cpp, и вот как их можно найти:

find . -type f -name "*.cpp"

С такими опциями команда find найдёт только файлы (-type f) с именами, оканчивающимися на .cpp.

abhishek@LHB:~$ find . -type f -name "*.cpp"
./file.cpp
./.cargo/registry/src/github.com-1ecc6299db9ec823/libz-sys-1.1.3/src/zlib/contrib/iostream2/zstream_test.cpp
./.cargo/registry/src/github.com-1ecc6299db9ec823/libz-sys-1.1.3/src/zlib/contrib/iostream/test.cpp
./.cargo/registry/src/github.com-1ecc6299db9ec823/libz-sys-1.1.3/src/zlib/contrib/iostream/zfstream.cpp

При работе с командой find всегда заключайте поисковое выражение в двойные кавычки.

С чем связана рекомендация заключать поисковый запрос в двойные или одинарные кавычки? Дело в том, что без кавычек оболочка будет работать с символом * как с джокером и выполнит подстановку.

Вот что будет, если ввести запрос без кавычек:

find . -type f -name *.cpp

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

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

image

В нашем случае файл .cpp всего один, и после подстановки команда выглядит так: find . -type f -name file.cpp. Она работает, поскольку file.cpp — корректный поисковый запрос.

А вот файлов .txt в той же папке два, и когда команда расширяется до find . -type f -name another.txt new.txt, выводится предупреждение, потому что поисковых запросов больше одного.

Именно поэтому сам поисковый запрос всегда следует заключать в двойные кавычки.

Поиск нескольких файлов с несколькими расширениями (или условием)

Команда, рассмотренная выше, нужна для поиска файлов по расширению. А что если нужно найти файлы с несколькими разными расширениями?

Вместо того чтобы прогонять команду find несколько раз, введите её один раз с опцией -o, которая работает как логическое условие «или»:

find . -type f -name "*.cpp" -o -name "*.txt" 

Например:

abhishek@LHB:~/Examples$ find . -type f -name "*.txt" -o -name "*.cpp"
./new.txt
./file.cpp
./new/new.txt
./new/dir2/another.txt
./new/dir1/new.txt
./another.txt

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

Все приведённые примеры иллюстрируют поиск в текущей папке, потому что команда включает в себя точку (.).

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

abhishek@LHB:~/Examples$ find ./new -name mystuff
./new/mystuff

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

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

find ./location1 /second/location -type f -name "pattern"

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

Опция -empty позволяет использовать команду find для поиска пустых файлов и папок.

Найти таковые в текущей папке можно следующим образом:

find . -empty

Можно указать тип объектов, чтобы искать только файлы или только папки:

find . -empty -type f

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

find . -empty -type f -name "*.cpp"

image

Поиск крупных и мелких файлов (поиск по размеру файла)

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

Используется опция -size с аргументом +N для файлов размером более N и -N для файлов размером менее N.

А вот как можно найти файлы точного заданного размера (50 КБ):

find . -size 50k

Так выполняется поиск файлов размером более 1 ГБ в текущей папке:

find . -size +1G

А так — файлов, не превышающих 20 байт:

find . -size -20c

Для поиска файлов размером более 100 МБ, но менее 2ГБ, введите:

find . -size +100M -size -2G

Поиск по размеру тоже можно сочетать с поиском по имени файла. Таким образом, найти в корневом каталоге все файлы размером более 500 МБ с именем, оканчивающимся на .log, можно так:

find / -size +500M -name "*.log"

Для справки:

  • c – байты
  • k – килобайты
  • M – мегабайты
  • G – гигабайты

Поиск недавно изменённых файлов (поиск по времени изменения или создания)

Вы ведь знакомы с параметрами mtime, atime и ctime?

  • Mtime – время последнего изменения файла
  • Ctime – время создания файла
  • Atime – время последнего доступа к файлу

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

Найти все файлы, претерпевшие изменения за последние трое суток (3*24ч), можно так:

find . -type f -mtime -3

А все файлы, созданные пять и более дней назад, ищутся так:

find . -type f -ctime +5

Понимаю, что 24 часа — большой срок. Что если нужно выявить файлы, изменённые всего пару минут назад? Для этого предусмотрены опции mmin, amin и cmin.

Так выглядит команда поиска всех файлов, изменённых за последние пять минут:

find . -type f -mmin -5

image

Можно не только указать имя файла, но и ограничить временной промежуток с двух сторон. Команда ниже выполнит поиск всех файлов .java, изменённых не ранее 30 и не позднее 20 минут назад.

find . -type f -mmin +20 -mmin -30 -name "*.java"

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

Надеюсь, вы имеете представление о разрешениях файлов в Linux.

Команда find позволяет выполнить поиск файлов по разрешению и режиму доступа.

find -perm mode

Поищем в текущей папке, к примеру, все файлы с режимом доступа 777:

find . -perm 777

А так можно найти все файлы с правами на чтение и запись для всех типов пользователей (только точное совпадение; файлы с правами на выполнение для всех не отобразятся):

find . -perm a=r+w

Поиск файлов по владельцу

Можно также найти файлы, принадлежащие определённому пользователю.

Вот как обнаружить в текущей папке все файлы пользователя Джона:

find . -type f -user John

Эта опция сочетается с другими, будь то размер или время и имя файла:

find . -type f -user John -name "*.cpp"

Отключение рекурсивного поиска для поиска только в текущей папке

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

find . -maxdepth 1 -type f -name "*.txt"

image

Исключение папки из поиска

Если нет необходимости производить поиск в той или иной папке, можно исключить её с помощью опций path, prune и логического «или».

find . -path "./directory_exclude/*" -prune -o -name SEARCH_NAME

Будьте внимательны: путь к папке должен оканчиваться на *, затем идёт -prune и только потом -o.

Попросту говоря, при поиске с опцией prune папка, указанная с помощью path, игнорируется. Prune всегда сопровождается флагом -o (логическое «или»), чтобы папки, которые не были исключены, просматривались на наличие искомого объекта.

Дальнейшая работа с результатами команды find: exec и xargs

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

Например, как найти файлы с именем, соответствующим определённому шаблону, и переименовать их за одно действие? Или выявить и удалить пустые файлы?

Вам уже известно, что в Linux можно использовать перенаправление ввода-вывода, чтобы объединить результаты одной команды с вводом другой. Но с результатами команды find это не сработает — по крайней мере, не напрямую.

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

  • Применить exec
  • Применить xargs

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

Допустим, вам нужен подробный список (ls -l) файлов, найденных командой find. Вот как его получить:

find . -type f -name "*.txt" -exec ls -l {} +

Результат будет таким:

abhishek@LHB:~/Examples$ find . -type f -name "*.txt" -exec ls -l {} +
-rw-rw-r-- 1 abhishek abhishek 39 Oct 13 19:30 ./another.txt
-rw-rw-r-- 1 abhishek abhishek 35 Oct 13 15:36 ./new/dir1/new.txt
-rw-rw-r-- 1 abhishek abhishek 35 Oct 13 15:36 ./new/dir2/another.txt
-rw-rw-r-- 1 abhishek abhishek 35 Oct 13 18:51 ./new/mystuff/new.txt
-rwxrwxrwx 1 abhishek abhishek 35 Oct 13 15:37 ./new/new.txt
-rw-rw-r-- 1 abhishek abhishek 35 Oct 13 18:16 ./new.txt

Многие забывают ввести {} + в конце команды exec. Но это необходимо — как и пробел между скобками {} и плюсом +.

Фигурные скобки ссылаются на результат выполнения команды find. Их содержимое может иметь следующий вид: {файл 1, файл 2, файл 3}. Символ + используется как конец команды exec.

Есть ещё один вариант оформления exec:

find . -type f -name "*.txt" -exec ls -l {} ;

В данном случае плюс заменён на точку с запятой. Дополнительная косая черта означает, что точка с запятой не является специальным символом.

Преимущество сочетания {} + заключается в меньшем количестве команд ( ls -l file1 file2 file3), тогда как комбинация {} ; запустит цепочку ls -l file1, ls -l file2 и так далее.

Однако сочетание {} ; даёт возможность использовать {} несколько раз в одном и том же выражении exec. Так, приведённая ниже команда переименует все обнаруженные файлы с расширением .old.

find . -type f -name "*.txt" -exec mv {} {}.old ;

Использование команды xargs

Многие пользователи Linux сталкиваются с необходимостью перенаправления ввода-вывода довольно часто. Но команда exec с цепочкой символов {} + кажется им слишком сложной.

И тут на помощь приходит xargs. Нужно просто перенаправить вывод команды find в команду xargs через конвейер.

find . -type f -name "*.txt" | xargs ls -l

image

Синтаксис куда проще, верно? К тому же команда xargs тоже весьма эффективна. Подробнее о ней — в статье по ссылке.

Сочетание команд find и grep

Теперь вы умеете совмещать команду find с xargs и exec, и пора перейти на следующий уровень — объединить find и grep.

Для сисадминов и разработчиков комбинация команд find и grep — одна из самых распространённых и вместе с тем самых полезных.

Команда find находит файлы с именем, соответствующим шаблону, а затем команда grep выполняет поиск по их содержимому.

Например, вам нужно найти все файлы .txt, в которых есть имя «Alice». Объединить команды find и grep можно так:

find . -type f -name "*.txt" -exec grep -i alice {} +

А можно с помощью xargs:

find . -type f -name "*.txt" | xargs grep -i alice

image

Конечно, пример элементарный, но если команда grep вам знакома, можете использовать её на своё усмотрение.

И это далеко не все возможности команды find…

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

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


НЛО прилетело и оставило здесь промокоды для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.

— 20% на выделенные серверы AMD Ryzen и Intel Core — HABRFIRSTDEDIC.

Доступно до 31 декабря 2021 г.

194 / 186 / 9

Регистрация: 14.06.2011

Сообщений: 495

1

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

06.08.2011, 11:30. Показов 3258. Ответов 9


Студворк — интернет-сервис помощи студентам

Вообщем проблема вот в чем — Есть текстбокс который называется «Поиск». Короче смысл такой же как и у эксплорера… банальный поиск файла в конкретной директории по первым буквам. А в идеале так же как и в ХР — можно в названии файла, а можно и в самом файле… Вывод будет в ListView, но это я уж сам сделаю, не проблема…



0



Евгений М.

1080 / 1006 / 106

Регистрация: 28.02.2010

Сообщений: 2,889

06.08.2011, 11:57

2

Пример поиска. То что нужно найти — ineedthis.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.IO;
 
class Program
{
    static List<string> lst;
    static string ineedthis;
 
    static void Main(string[] args)
    {
        lst = new List<string>();
        ineedthis = "readme_en.txt";
        search("Z:\");
        for (int i = 0; i < lst.Count; i++)
        {
            Console.WriteLine(lst[i]);
        }
       
    }
 
    static void search(string dir)
    {
        string[] subdirs = Directory.GetDirectories(dir);
        string[] foundfiles = Directory.GetFiles(dir, ineedthis);
        for (int i = 0; i < foundfiles.Length; i++)
        {
            lst.Add(foundfiles[i]);
        }
        for (int i = 0; i < subdirs.Length; i++)
        {
            search(subdirs[i]);
        }
    }
 
}
 Комментарий модератора 
Старайтесь приводить код на языке, актуальном для данного раздела.
Все вот эти «не сложно переделать» просьба не писать. Если «не сложно переделать» — переделайте и выложите в актуальном виде.



1



Eugene22

_

2363 / 1241 / 78

Регистрация: 28.10.2009

Сообщений: 4,331

06.08.2011, 12:13

3

kOS_77, примерно так, только вместо ListView используется ListBox

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Imports System.IO
Public Class Form1
 
    Dim dir As String
    Dim dirInfo As DirectoryInfo
 
    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
        ListBox1.Items.Clear()
        If TextBox2.Text = "" Then Exit Sub
        For Each fileIn As FileInfo In dirInfo.GetFiles()
            If fileIn.Name.StartsWith(TextBox2.Text) Then
                ListBox1.Items.Add(fileIn.Name)
            End If
        Next
    End Sub
 
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        dir = TextBox1.Text
        If Directory.Exists(dir) Then
            TextBox2.Enabled = True
            dirInfo = New DirectoryInfo(dir)
        Else
            MessageBox.Show("Эта папка не существует")
        End If
    End Sub
End Class

Программка в прикреплении

Вложения

Тип файла: zip FileSearch.zip (9.6 Кб, 54 просмотров)



2



1080 / 1006 / 106

Регистрация: 28.02.2010

Сообщений: 2,889

06.08.2011, 12:15

4

Забыл сказать. Из моего кода результат — lst



0



Почетный модератор

21373 / 9107 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

06.08.2011, 12:21

5

Цитата
Сообщение от kOS_77
Посмотреть сообщение

по первым буквам

а поподробнее?
Ты хочешь выводить в листбокс или ListView все те файлы, в которых встречаются буквы, что пользователь вводит в поисковое поле?

Добавлено через 4 минуты
Eugene22, может я не понял чего…
В твоем коде мы при каждом изменении текста в текстбоксе заново переполучаем все файлы в папке?
Нет?



0



_

2363 / 1241 / 78

Регистрация: 28.10.2009

Сообщений: 4,331

06.08.2011, 12:38

6

Цитата
Сообщение от Памирыч
Посмотреть сообщение

В твоем коде мы при каждом изменении текста в текстбоксе заново переполучаем все файлы в папке?
Нет?

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



0



Почетный модератор

21373 / 9107 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

06.08.2011, 15:22

7

Eugene22, понял
Отлично



0



194 / 186 / 9

Регистрация: 14.06.2011

Сообщений: 495

06.08.2011, 18:51

 [ТС]

8

Я ничего нового не изобретаю, поиск должен быть такой же как в ХР или Висте, в ХР мне кстати даже больше нравится.

А вот как мне сделать работу поиска со звездочками ? К примеру *.jpg или cyberforum.* ?



0



Почетный модератор

21373 / 9107 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

06.08.2011, 20:53

9

kOS_77, так что, что ребята предложили — это не то?
Ты ж сам просил

Цитата
Сообщение от kOS_77
Посмотреть сообщение

по первым буквам

?

Добавлено через 6 минут
тогда глянь
тут
и
тут



1



194 / 186 / 9

Регистрация: 14.06.2011

Сообщений: 495

06.08.2011, 23:53

 [ТС]

10

Нее… все ок, это и надо было.

Всем спасибо и +



0



Понравилась статья? Поделить с друзьями:
  • Как найти кровь на земле
  • Как исправить косолапость ног у ребенка
  • Как составить трудовой договор с совместителем образец
  • Как правильно составить договор купли продажи дома по материнскому капиталу
  • Как найти сообщение в вайбере на айфоне