Знаете ли вы хороший способ найти файл или контент по имени рекурсивно, похожий на функцию поиска ms-windows в Linux? Я могу find . | grep test.html
подозревать, что это не лучший способ. Спасибо за любой ответ.
Например, запуск find . | grep terms.html
дает ожидаемый результат, но locate terms.html
не приводит к нему, хотя locate обновляет базу данных. Возможно, это связано с тем, что файл находится на USB-накопителе?
решение1
Команда find, вот такая
find . -iname '*hellofiles*'
Вы говорите, что find ·location· -iname означает, что регистр не чувствителен, а в '' - это регулярное выражение, если хотите.
find /home/user -iname '*zip' найдет все zip-файлы в /home/user
Если вам нужен более быстрый поиск, вы можете использовать locate, есть утилита, которая регулярно сканирует диск, например, каждую неделю или каждый день, в зависимости от настроек.
locate myfile
и он будет искать в базе данных, видел ли updatedb где-нибудь файл myfile.
решение2
find
имеет ряд опций, которые позволяют находить файлы по имени, регулярным выражениям или даже более сложным критериям, таким как размер или владелец. Например
find . -iname '*.txt'
См. также раздел примеров на связанной странице руководства.
Тем не менее, find
имеет явный недостаток, заключающийся в поиске файловой системы каждый раз, когда вы его вызываете.locate
С другой стороны, утилита, в своих многочисленных вариациях, использует регулярно обновляемую базу данных файлов в вашей системе.
решение3
В случае пакетов: dpkg -L имя_пакета
или если вы знаете, что он находится в определенной папке, добавьте использование grep, например:
dpkg -L имя_пакета | grep имя_папки
Например, вы только что установили Chromium и вам нужно узнать, где находится корзина.
dpkg -L chromium-браузер | grep bin
решение4
find . -name test.html
или вы также можете использовать подстановочные знаки:find . -name \*test.html