3

Знаете ли вы хороший способ найти файл или контент по имени, рекурсивно похожий на поиск функции ms-windows в Linux? Я могу find . | grep test.html подозрением, что он не самый лучший. Спасибо за любой ответ.

Например, запустить find . | grep terms.html дает ожидаемый результат, в то время как locate terms.html не дает, даже если locate обновляется БД - возможно, это связано с тем, что на USB-карте находится файл?

8 ответов8

13

Команда найти, как это

 find . -iname '*hellofiles*'

вы говорите, что find · location · -iname означает, что регистр не учитывается, а в '' это регулярное выражение, если хотите.

find /home /user -iname '* zip' найдет вам все zip-файлы в /home /user

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

locate myfile

и он будет смотреть в базе данных, если updatedb где-нибудь видел myfile.

2

В случае пакетов: dpkg -L имя_пакета

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

dpkg -L имя_пакета | grep foldername

Например, вы только что установили Chromium и вам нужно знать, где находится корзина

dpkg -L хром-браузер | grep bin

1

find ./ -name "filename" или вы можете сделать что-то вроде find ./ -name "*.jar" чтобы найти все файлы с расширением .jar. Вы также можете find ./ -name "*.jar" | xargs grep -n 'main' чтобы найти все файлы .jar, в которых содержится main.

1

find . -name test.html или вы также можете использовать подстановочные знаки: find . -name \*test.html

1

Вы можете использовать команду find , если вы хотите сделать это через терминал.

Работа конвейера find и grep будет работать, в противном случае find предоставляет некоторые опции (например, -name и -iname) для этого:

find DIRECTORY -name test.html
1

Есть две утилиты find и locate . Так как другие предложили find , я буду говорить о locate .

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

Когда база данных будет заполнена, просто запустите: locate file . Если вы просто используете имя файла, он будет искать этот файл, начиная с / . Таким образом, вы можете получить /etc/file и /usr/share/file . Если вы хотите просто ограничить его своим домашним каталогом, используйте это:

 locate file | grep /home/user

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

1

Я не знаю функцию поиска Windows, но когда вы ищете альтернативу | grep * тогда вы можете попробовать:

find /* -name "keyword"

slocate также должен соответствовать вашим критериям.

С уважением, / Dley

1

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

find . -iname '*.txt'

См. Также раздел с примерами на связанной странице руководства.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .