Як знайти всі файли з однаковим розширенням в каталозі


61

Я початківець в Linux і хочу шукати всі .confфайли в /etc/.

Я спробував grep -r *.conf /etc, але результат неправильний.

Що я роблю неправильно?

Відповіді:


94

Просто натисніть клавішу Ctrl+ Alt+ Tна клавіатурі, щоб відкрити термінал. Коли він відкриється, запустіть команду нижче:

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

Тут буде перераховано всі файли з розширенням .txt.

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

find /etc -type f -name "*.conf"

Тут здійснюється пошук у /etcкаталозі та всіх його підкаталогах для звичайних файлів із .confрозширенням.


1
Це працює. Чи є альтернативи для цієї команди?
Адріан Джордж

1
Ви можете подивитися на Locate .
Мітч

@AdrianGeorge findнастільки широко використовується, настільки добре задокументований і має стільки публікацій StackOverflow / Exchange про нього, що важче знайти щось легше працювати. Практично все, що ви хочете зробити, було написано десь в Інтернеті.
BallpointBen

6

Я особисто використовую find, але ви можете також використовувати для цих речей:

shopt -s globstar
ls /etc/{,**/}*.conf

І ви можете використовувати locate, і це швидко, але не надійно.

locate '/etc/**.conf'

Чому не locateнадійний?
Гіральді

1
@Giraldi locateпокладається на базу даних mlocate, яку нещодавно оновили для точності. За замовчуванням оновлення планується проводити лише один раз на день (хоча ви можете змусити його вручну updatedb).
Олі

@Oli не правда для Mac, хоча? думаю, mac os постійно оновлює mlocate
d8aninja

6

grepшукає вміст файлів, а не назви файлів.

Щоб знайти всі .confфайли, які /etc/ви хочете знайти:

find /etc -name "*.conf"

2

Команда find повільна, використання цієї команди дасть результат негайно:

locate "/etc/*.conf"

Більше інформації про locateкоманду (в mlocateпакеті) можна знайти тут: https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab


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