Ошибка поиска файла с помощью текущей опции поиска nx

Обновлено: 04.07.2024

Очень важно уметь вовремя найти нужную информацию в системе. Конечно, все современные файловые менеджеры предлагают отличные функции поиска, но им не сравнится с поиском в терминале 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. Поиск всех файлов

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


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

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

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


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


Поиск по имени в текущей папке:

find . -name "testfile*"

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

find . -iname "TeStFile*"


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"

Эта команда найдёт как php, так и html файлы.

6. Тип файла

По умолчанию find ищет как каталоги, так и файлы. Если вам необходимо найти только каталоги используйте критерий type с параметром d. Например:

find . -type d -name "Загрузки"


Для поиска только файлов необходимо использовать параметр f:

find . -type f -name "Загрузки"


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

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

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

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

Найти скрытые файлы только в текущей папке. Имена скрытых файлов в Linux начинаются с точки:

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


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

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

find . -type f -perm 0664

Права также можно задавать буквами для u (user) g (group) и o (other). Например, для того чтобы найти все файлы с установленным флагом Suid в каталоге /usr выполните:

sudo find /usr -type f -perm /u=s


Поиск файлов доступных владельцу только для чтения только в каталоге /etc:

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


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

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

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

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

find . -user sergiy

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

find /var/www -group www-data


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

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

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

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

find / -mtime +50 -mtime -100

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

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

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

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

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


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

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

find . -empty -exec ls -ld <> \;


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

find /tmp -type f -name "*.txt" -exec rm -f <> \;

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

find /home/bob/dir -type f -name *.log -size +100M -exec rm -f <> \;

Выводы

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

Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

Общий синтаксис

find <где искать> <опции>

<где искать> — путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

<опции> — набор правил, по которым выполнять поиск.

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

Описание опций

Тип объекта поиска. Возможные варианты:

  • f — файл;
  • d — каталог;
  • l — ссылка;
  • p — pipe;
  • s — сокет.

Также доступны логические операторы:

Оператор Описание
-a Логическое И. Объединяем несколько критериев поиска.
-o Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
-not или ! Логическое НЕ. Инвертирует критерий поиска.

Полный набор актуальных опций можно получить командой man find.

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

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

1. Простой поиск по имени:

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

2. Поиск файла по части имени:

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

3. Несколько условий.

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

в) Более компактный вид имеют регулярные выражения, например:

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

find . -type f -mtime +60

* данная команда найдет файлы, которые менялись более 60 дней назад.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find --version).

а) дате изменения:

find . -type f -newermt "2019-11-02 00:00"

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

б) дате обращения:

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

в) дате создания:

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct "2019-09-09 07:50:00"

* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

По типу

Искать в текущей директории и всех ее подпапках только файлы:

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

find / -perm 0666

2. Находим файлы, доступ к которым имеет только владелец:

find / -perm 0600

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

find / -type f -exec grep -i -H "content" <> \;

* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.

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

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name "sess_*" -type f -print -exec rm <> \;

* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.

2. Переименовать найденные файлы:

find . -name "sess_*" -type f -exec mv <> new_name \;

3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name "*.tmp" | wc -l

4. Изменить права:

find /home/user/* -type d -exec chmod 2700 <> \;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

5. Передать найденные файлы конвееру (pipe):

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

6. Произвести замену в файлах с помощью команды sed:

find /opt/project -type f -exec sed -i -e "s/test/production/g" <> \;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

Чистка по расписанию

Команду find удобно использовать для автоматического удаления устаревших файлов.

Открываем на редактирование задания cron:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm <> \;

* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.


Поиск

Если Windows Search или Search Indexer не работает должным образом или не запускается в Windows 10/8/7, этот пост по устранению неполадок может помочь вам решить проблему. Вы можете попробовать предложения в любом порядке, но не забудьте сначала создать точку восстановления системы, прежде чем начинать.

Поиск Windows не работает

Не удалось выполнить поиск

Попробуйте эти шаги:

1] Перестроить поисковый индекс

Чтобы перестроить поисковый индекс , откройте «Панель управления»> «Система и обслуживание»> «Параметры индексации». В разделе «Дополнительные параметры» нажмите «Восстановить настройки по умолчанию», а также «Восстановить индекс». Нажмите ОК.


Затем введите «service» в строке поиска в меню «Пуск» и запустите службы. Прокрутите вниз до «Службы поиска Windows» и убедитесь, что она установлена ​​на «Автоматически и работает». Перезапустите этот сервис. Вам также необходимо убедиться, что RPC (Удаленный вызов процедур) запущен и установлен на Автоматический.


Ожидание получения статуса индексации

Индексатор поиска Microsoft Windows перестал работать и был закрыт



… тогда есть вероятность, что ваш следующий ключ реестра может быть поврежден:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows Search



Откройте Regedit и перейдите к ключу, указанному выше. На правой панели дважды нажмите SetupCompletedSuccessfully . Убедитесь, что значение данных 0 , то есть нулевая цифра. Нажмите ОК. Перезагружать.

Эта процедура полностью сбросит ваш поиск в Windows, перестроит индекс и сбросит параметры сканирования и другие параметры индексации.

Windows не удалось запустить поиск Windows на локальном компьютере



Затем я предлагаю вам посмотреть Event Viewer для проверки системных журналов. Для этого просто введите event в строке поиска меню Пуск Windows и нажмите Enter. На левой стороне, нажмите на Систему, чтобы просмотреть журналы.


Запишите идентификатор события и найдите интерактивную справку журнала событий.

4] Откройте проводник Windows, настройте отображение скрытых файлов и папок с помощью параметров папки, а затем перейдите в следующее местоположение:

C: \ Users \ имя пользователя \ AppData \ Local \ Packages \ windows.immersivecontrolpanel_cw5n1h2txyewy \ LocalState

Щелкните правой кнопкой мыши папку Indexed> Свойства> Дополнительно> Установите флажок Разрешить индексировать файлы в этой папке в дополнение к свойствам файлов. Нажмите Применить и выйти.

5] Если вы не можете найти файлы при поиске на компьютере Windows, даже если файлы существуют на компьютере, тогда KB932989 может оказаться тем, что вы ищете!

7] См. Этот пост, если окно поиска в меню «Пуск» Windows не работает в Windows.

8] Этот пост может помочь вам, если в окне поиска неправильно отображаются результаты поиска в Windows.

9] Запустите средство устранения неполадок поиска Windows и следуйте его советам.

10] Восстановите ваш компьютер до предыдущей хорошей точки или перезагрузите/обновите компьютер с Windows. В противном случае восстановите установку Windows 7. Загрузитесь с DVD-диска Windows> Выберите опцию восстановления системы> Выберите «Восстановить компьютер»> Выберите установку Windows> Выберите «Восстановление при загрузке»> Следуйте инструкциям.

11] См. Этот пост, если вы видите, что поиск индексации был отключен в Windows 10 Пуск меню.

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

ПРИМЕЧАНИЕ. Блог Fix It от Microsoft автоматизировал эту публикацию WinVistaClub от 7 октября 2008 г. по Windows Search не работает в пакете Fix it MSI! Сбрасывает настройки поиска Windows по умолчанию. Это, кстати, первый MVP Fix It!

расширенный синтаксис запросов (акс) — это синтаксис запроса по умолчанию, используемый Windows поиска для запроса индекса и уточнения и сужения параметров поиска. АКС используется разработчиками для создания запросов программным способом (и пользователями для ограничения параметров поиска). канонический акс был введен в Windows 7 и должен использоваться в Windows 7 и более поздних версий для программного создания запросов акс.

Этот раздел организован следующим образом:

О расширенном синтаксисе запросов

Запрос состоит из базовых запросов, связанных с AND, OR и NOT, как показано в следующем примере синтаксиса:

АКС не учитывает регистр, за исключением AND, OR и NOT, которые должны располагаться в верхнем регистре.

Если запрос имеет два или более использования и или или, то они будут привязаны слева направо, независимо от того, является он и или или. Таким образом, запрос "Apple AND груш или Плам" будет интерпретирован так, как если бы он был написан как "(Apple AND груш) или Плам", а запрос "Apple или груш и Плам" будет интерпретироваться как "(Apple или груша) и Плам". Таким образом, если документ содержит слово Плам, но ни Apple, ни груши, первый запрос возвратит его, но второй запрос не будет. Поэтому рекомендуется использовать явные круглые скобки для любого запроса, который смешивается с, и или, чтобы избежать ошибок или неправильных интерпретаций.

Базовый запрос выполняет поиск элементов, которые соответствуют ограничению для свойства. Единственной обязательной частью базового запроса является значение ограничения или поиска. если свойство не задано, Windows поиск выполняет поиск по всем свойствам. представляет ограничение поиска.

Следующие формы для базового запроса являются допустимыми:

Свойство обозначается ключевым словом, таким как Author или size, или каноническим именем свойства, например System. DateModified. Для свойства допустимы следующие формы:

Оператор указывает операцию, например < или =. Список допустимых операторов см. в подразделе «операторы запроса» далее в этом разделе.

Базовое ограничение — это простое ограничение для свойства, которое можно записать без скобок:

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

если оператор не указан, Windows поиск выбирает наиболее подходящий оператор для запроса:

  • Для свойства String _ _ предполагается использование оператора COP Word STARTSWITH $<.
  • Для всех остальных свойств _ предполагается, что используется оператор COP EQUAL =.

Для программного использования АКС рекомендуется всегда иметь явный оператор. Допустимая форма для поиска простого значения или диапазона значений выглядит следующим образом:

Простое значение может состоять из любого из следующих типов:

Примеры

Запрос, выполняющий поиск документа, содержащего этап «прошлый квартал», созданный с помощью Сереса или Иванов и сохраненный в папке MyDocs, объединяет три основных запроса следующим образом:

Вот три основных запроса:

  • "прошлый квартал"
  • Автор: (Сереса или Иванов)
  • Папка: MyDocs

Базовый запрос, в котором используется канонический синтаксис:

Свойства

на свойства ссылается ключевое слово, которое может быть именем канонического свойства в Windows 7 и более поздних версий. акс в пользовательском интерфейсе Windows может использовать метку вместо канонического имени свойства, например author, а не System. author. в Windows Vista и более ранних версиях можно было использовать метки на английском языке независимо от языка пользовательского интерфейса. в Windows 7 и более поздних версиях Windows поиск распознает ключевые слова в текущем языке пользовательского интерфейса по умолчанию.

Поддержка пользовательских свойств

Свойства DateTime в Windows 8

начиная с Windows 8, свойства DateTime (например, System. DateModified) поддерживают канонический формат даты и времени, заданный ISO-8601, при необходимости включая часовой пояс UTC.

Windows 8 и более ранних версий дата и время без времени UTC: гггг - мм - DDThh:мм:сс

Этот формат задает местное время независимо от национальной настройки пользователя или системы.

Windows 8, дата-время с часовым поясом utc: гггг - мм - DDThh:мм:сстзд

Этот формат задает время в указанном часовом поясе в формате UTC.

Использование ключевых слов в локальных языках

в Windows 7 и более поздних версиях назначенные ключевые слова работают только в системном языке, например в ключевых словах немецкого языка только в немецкой операционной системе, а ключевые слова на английском языке — только в английской версии операционной системы. System. Author — это каноническое ключевое слово, а для свойства System. Author — Author, например,. введение канонических ключевых слов компенсирует тот факт, что ключевые слова, назначенные английским языком, больше не распознаются во всех операционных системах независимо от языка, как в Windows Vista и более ранних версий.

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

канонический синтаксис расширенных запросов в Windows 7

Ниже приведены соглашения для канонического синтаксиса ключевого слова.

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

Примеры

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

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

Операторы запроса

Если свойство p имеет несколько значений для некоторого элемента, запрос АКС для p: возвращает элемент, если имеет значение true по крайней мере для одного из значений. ( представляет ограничение.)

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

Читайте также: