Как найти путь файла на основе его имени?

Каталог точно так же, как файл, но ядро ограничивает доступ, только позволяя определенным системным вызовам открыться, чтение и запись к записи каталога. Вот некоторые примеры различий в функциях C:

File      Directory
open()    opendir()
read()    readdir()
write()   N/A
close()   closedir()
22
27.02.2016, 00:20
5 ответов

Для быстрого поиска (но не категоричный):

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.

23
27.01.2020, 19:42
  • 1
    @terdon, Вы удивили меня, я никогда не имею хотя о том, чтобы смотреть man locate прежде!!! принятие его просто простое средство поиска.Большое спасибо. –  user.dz 11.02.2014, 02:46
  • 2
    Да, это было в значительной степени моей реакцией в первый раз, когда я прочитал страницу справочника :) –  terdon♦ 11.02.2014, 02:47
  • 3
    , из которой стоит отметить роль updatedb для этой команды- locate часто сбои без этого, для меня, так или иначе –  rm-vanda 11.02.2014, 02:55
  • 4
    @rm-vanda, я обновил ответ на упоминание updatedb.Спасибо. –  user.dz 11.02.2014, 03:07
  • 5
    locate '*/settings.xml' является, вероятно, более портативным среди всевозможных реализаций locate (где доступный). –  Stéphane Chazelas 27.02.2016, 00:23

Медленное, но устойчивое перерывает файловую систему, но Категоричный.

find / -xdev -name settings.xml

Это займет время, и можно получить некоторые ошибки разрешения, но это доберется там. Если у Вас есть еще некоторая идея, где она может быть расположена, изменяют первый каталог от / кому: /where/you/guess

16
27.01.2020, 19:42
  • 1
    Добавление 2>/dev/null в конец команды подавит весь вывод ошибок (путем перенаправления stderr к пустому устройству). –  Tanner Swett 12.02.2014, 20:43
  • 2
    -xdev: Не убывайте каталоги в других файловых системах. –  Pablo A 17.05.2017, 16:51

Пример:

$ locate settings.xml
/usr/share/mime/application/x-cisco-vpn-settings.xml
1
27.01.2020, 19:42

дерево иначе, если Вы не уверены точно, что Вы ищете, и это, кажется, немного быстрее-:

tree -f / | grep settings.xml

Другие полезные флаги: -i на grep будет игнорировать регистр, -h для человекочитаемого на дереве-

- страница справочника имеет много полезных опций-!

0
27.01.2020, 19:42
  • 1
    Не хорошая идея, tree(1) показывает дерево ASCII-творчества файлов, которое затем искалечено grep(1). –  vonbrand 11.02.2014, 03:24
  • 2
    Да, если Вы собираетесь использовать tree, можно также использовать find . type -f который будет быстрее. –  terdon♦ 11.02.2014, 03:29

Параметры -la выводят длинную версию ls, а также каталоги. лс -ля | grep settings.xml

0
27.01.2020, 19:42

Теги

Похожие вопросы