Come trovare il percorso di un file in base al suo nome?


22

Sto cercando di trovare il settings.xmlfile nella mia macchina Ubuntu. Non ho idea di dove sia e in quale directory si trovi.

Ho provato a usare questo -

ls -R | grep settings.xml

Ma non mi mostra l'intero percorso in cui si trova. Esiste un altro comando che devo provare che può darmi il percorso completo?


4
Ogni volta che pensi che la soluzione sia analizzare l'output di ls, quasi sicuramente lo stai facendo nel modo sbagliato .
terdon

Risposte:


23

Per una ricerca veloce (ma non definitiva):

locate -br '^settings.xml$'

Da 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.

L' ^e $garantire che solo i file il cui nome è settings.xmle non i file i cui nomi contengono settings.xml verranno stampati.

Potrebbe essere necessario eseguire per la prima volta: updatedb(as root) per aggiornare / creare il database di locate.


@terdon, mi hai sorpreso, non ho mai pensato di guardare man locateprima !!! assumendolo solo un semplice strumento di ricerca. Grazie mille.
user.dz,

Sì, è stata praticamente la mia reazione la prima volta che ho letto la pagina man :)
terdon

4
vale la pena notare il ruolo di updatedbper questo comando - locatespesso fallisce senza che, per me, comunque
rm-vanda

@ rm-vanda, ho aggiornato la risposta da menzionare updatedb. Grazie.
user.dz,

4
locate '*/settings.xml'è probabilmente più portatile tra le diverse implementazioni di locate(ove disponibile).
Stéphane Chazelas,

15

Una ricerca lenta ma costante attraverso il file system, ma definitiva.

find / -xdev -name settings.xml

Ci vorrà del tempo e potresti ricevere alcuni errori di autorizzazione ma ci arriverà. Se hai qualche idea in più su dove potrebbe trovarsi, cambia la prima directory da /a/where/you/guess


4
L'aggiunta 2>/dev/nullalla fine del comando eliminerà tutto l'output dell'errore (reindirizzando stderr sul dispositivo null).
Tanner Swett,

2
-xdev: Non discendere le directory su altri filesystem.
Pablo A

1

Esempio:

$ locate settings.xml
/usr/share/mime/application/x-cisco-vpn-settings.xml

0

l'albero è un altro buon modo, se non sei sicuro di quello che stai cercando, e sembra essere un po 'più veloce:

tree -f / | grep settings.xml

Altre bandiere utili: -isu grep ignorerà il caso, -hper la lettura umana sull'albero -

- la pagina man ha molte opzioni utili -!


6
Non è una buona idea, tree(1)mostra un albero di arte ASCII dei file, che viene poi mutilato grep(1).
vonbrand,

1
Sì, se hai intenzione di usare tree, puoi anche usare find . type -fquale sarà più veloce.
terdon

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.