Як шукати файли за допомогою Linux?


3

Чи знаєте ви хороший спосіб знайти файл або вміст за назвою рекурсивно схожим на пошук функції ms-windows за допомогою Linux? Я можу find . | grep test.htmlпідозрювати, що це не найкраще. Дякую за будь-яку відповідь.

Наприклад, біг find . | grep terms.htmlдає мій очікуваний результат, але locate terms.htmlнавіть не знаходячи оновлення db - можливо, це стосується того, що це USB-накопичувач, на якому знаходиться файл?

Відповіді:


14

Команда знаходить, як це

 find . -iname '*hellofiles*'

ви говорите, що знайти · location · -iname означає, що не відрізняється від регістру, а в '' є регулярним виразом, якщо ви хочете.

find / home / user -iname '* zip' знайде вам усі поштові файли в / home / user

Якщо ви хочете швидшого пошуку, ви можете використовувати locate, є утиліта, яка сканує диск регулярно, як і кожен тиждень або день залежно від способу настройки

locate myfile

і він буде шукати в базі даних, якщо оновленняb побачило мій файл де-небудь.


Це допомогло мені багато разів, ніж знайти
Ніклас Розенкранц

2

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

find . -iname '*.txt'

Дивіться також приклад розділу на пов'язаній сторінці керівництва.

З цього findприводу є чіткий недолік пошуку файлової системи кожного разу, коли ви її викликаєте. З locateіншого боку, утиліта використовує регулярно оновлювану базу даних файлів у вашій системі.


Дякую! Команда find . -iname privacy.htmlдає очікуваний результат, поки locate не буде (це файл privacy.html, котрий я прослухував на USB-пам’яті)
Niklas Rosencrantz

2

У випадку пакетів: dpkg -L ім'я пакета

або якщо ви знаєте, що він знаходиться у певній папці, додайте використання grep, наприклад:

dpkg -L назва пакета | назва папки grep

Наприклад, ви щойно встановили Chromium і вам потрібно знати, де знаходиться смітник

dpkg -L хром-браузер | грейп-бункер


1

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


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
locateробить глобуси з оболонками, також макіяж. Тоді вам може знадобитися процитувати свій шаблон. Ви також можете використовувати -rпрапор, щоб використовувати регулярні вирази.
Багата Гомолка

1

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

find /* -name "keyword"

slocate також повинен відповідати вашим критеріям.

З повагою, / длі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.