Я початківець в Linux і хочу шукати всі .confфайли в /etc/.
Я спробував grep -r *.conf /etc, але результат неправильний.
Що я роблю неправильно?
Я початківець в Linux і хочу шукати всі .confфайли в /etc/.
Я спробував grep -r *.conf /etc, але результат неправильний.
Що я роблю неправильно?
Відповіді:
Просто натисніть клавішу Ctrl+ Alt+ Tна клавіатурі, щоб відкрити термінал. Коли він відкриється, запустіть команду нижче:
find . -type f -name "*.txt"
Тут буде перераховано всі файли з розширенням .txt.
На .початку позначається поточний каталог. findрекурсивно здійснює пошук у всіх каталогах нижче заданого шляху. Якщо ви хочете, щоб пошук почався десь, крім поточної робочої каталоги, вкажіть шлях, наприклад:
find /etc -type f -name "*.conf"
Тут здійснюється пошук у /etcкаталозі та всіх його підкаталогах для звичайних файлів із .confрозширенням.
findнастільки широко використовується, настільки добре задокументований і має стільки публікацій StackOverflow / Exchange про нього, що важче знайти щось легше працювати. Практично все, що ви хочете зробити, було написано десь в Інтернеті.
Я особисто використовую find, але ви можете також використовувати для цих речей:
shopt -s globstar
ls /etc/{,**/}*.conf
І ви можете використовувати locate, і це швидко, але не надійно.
locate '/etc/**.conf'
locateнадійний?
locateпокладається на базу даних mlocate, яку нещодавно оновили для точності. За замовчуванням оновлення планується проводити лише один раз на день (хоча ви можете змусити його вручну updatedb).
grepшукає вміст файлів, а не назви файлів.
Щоб знайти всі .confфайли, які /etc/ви хочете знайти:
find /etc -name "*.conf"
Команда 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