Як знайти шлях до файлу на основі його імені?


22

Я намагаюся знайти settings.xmlфайл у своїй машині Ubuntu. У мене немає поняття, де він знаходиться і в якому каталозі він знаходиться.

Я спробував скористатися цим -

ls -R | grep settings.xml

Але це не показує мені повний шлях, де він є. Чи є якась інша команда, яку мені потрібно спробувати, яка може дати мені повний шлях?


4
Щоразу, коли ви думаєте, що рішення полягає в аналізі результатів ls, ви майже напевно робите це неправильно .
terdon

Відповіді:


23

Для швидкого пошуку (але не остаточного):

locate -br '^settings.xml$'

Від man locate:

   locate  reads  one or more databases prepared by updatedb(8) and writes
   file names matching at least one of the PATTERNs  to  standard  output,
   one per line.

   -b, --basename
          Match  only  the base name against the specified patterns.  This
          is the opposite of --wholename.
   -r, --regexp REGEXP
          Search for a basic regexp REGEXP.  No PATTERNs  are  allowed  if
          this  option  is used, but this option can be specified multiple
          times.

^І $гарантує , що тільки файли, ім'я settings.xmlі не файли, імена яких містять settings.xml будуть надруковані.

Вам може знадобитися вперше запустити: updatedb(як root) для оновлення / створення бази даних locate.


@terdon, ти мене здивував, я ніколи не хотів продивитися man locate!!! припускаючи, що це просто простий інструмент пошуку. Велике спасибі.
user.dz

Так, це була моя реакція, коли я вперше прочитав сторінку чоловіка :)
terdon

4
варто відзначити роль updatedbцієї команди - locateчасто без цього не вдається, для мене все одно
rm-vanda

@ rm-vanda, я оновив відповідь, щоб згадати updatedb. Дякую.
user.dz

4
locate '*/settings.xml'ймовірно, більш портативний серед різних реалізацій locate(де є).
Стефан Шазелас

15

Повільний, але стійкий пошук через файлову систему, але остаточний.

find / -xdev -name settings.xml

Мине певний час, і ви можете отримати деякі помилки дозволу, але вони потраплять. Якщо у вас є ще якась ідея, де він може бути розташований, змініть перший каталог з /на/where/you/guess


4
Додавання 2>/dev/nullдо кінця команди придушить всі вихідні помилки (шляхом перенаправлення stderr на нульовий пристрій).
Tanner Swett

2
-xdev: Не спускайте каталоги в інші файлові системи.
Пабло А


0

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

tree -f / | grep settings.xml

Інші корисні прапори: -iна grep буде проігноровано випадок, -hдля людини читається на дереві -

- сторінка man має безліч корисних варіантів -!


6
Непогана ідея, tree(1)показує дерево файлів ASCII-файлів, яке потім скасовується grep(1).
vonbrand

1
Так, якщо ви збираєтесь використовувати tree, ви можете також скористатися тим, find . type -fщо буде швидше.
terdon

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