Bir dosyanın yolunu adına göre nasıl bulabilirim?


22

settings.xmlUbuntu makinemdeki dosyayı bulmaya çalışıyorum . Nerede olduğu ve hangi dizinde olduğu hakkında hiçbir fikrim yok.

Bunu kullanmayı denedim -

ls -R | grep settings.xml

Ama bana bulunduğu yeri tam olarak göstermiyor. Bana tam yolu verebilecek başka bir emir var mı?


4
Çözümün çıktısını ayrıştırmak olduğunu düşündüğünüzde, lsneredeyse kesinlikle yanlış şekilde yapıyorsunuzdur .
terdon

Yanıtlar:


23

Hızlı arama için (ancak kesin değil):

locate -br '^settings.xml$'

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

^Ve $ismi olduğundan sadece dosyaları sağlamak settings.xmldeğil, isimleri dosyaları içeriyor settings.xml basılacaktır.

İlk kez çalıştırmanız gerekebilir: updatedb(as root) veritabanını güncellemek / oluşturmak locate.


@ terdon, beni şaşırttın, daha man locateönce bakmak hakkında hiç düşünmedim !!! sadece basit bir arama aracı varsayarsak. Çok teşekkür ederim.
user.dz

Evet, adam sayfasını ilk okuduğumda benim tepkim
buydu

4
bu emrin rolünü not etmeye değer updatedb- locatesık sık o olmadan başarısız olur, benim için zaten
rm-vanda

@ rm-vanda, bahsetmek için cevabı güncelledim updatedb. Teşekkür ederim.
user.dz

4
locate '*/settings.xml'muhtemelen locate( farklı yerlerde) farklı uygulamaları arasında daha taşınabilir .
Stéphane Chazelas

15

Dosya sistemi üzerinden yapılan yavaş ama sabit bir arama, ancak Kesin.

find / -xdev -name settings.xml

Biraz zaman alacak ve bazı izin hataları alabilirsiniz ancak oraya ulaşacaktır. Eğer ondan değiştireceğim ilk dizin bulunabilir biraz daha fikrin varsa /için/where/you/guess


4
2>/dev/nullKomutun sonuna eklemek, hata çıktısının tümünü gizleyecektir (stderr null cihaza yönlendirilerek).
Tanner Swett

2
-xdev: Dizinleri diğer dosya sistemlerine indirmeyin.
Pablo A,

1

Örnek:

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

0

ağaç, başka bir iyi yoldur, tam olarak ne aradığınızdan emin değilseniz ve biraz daha hızlı gibi görünüyorsa:

tree -f / | grep settings.xml

Diğer faydalı bayraklar: -igrep -hüzerinde ağaçta okunabilen insanlar için durumu göz ardı edecek -

- man sayfası çok sayıda kullanışlı seçeneğe sahiptir -!


6
İyi bir fikir değil, tree(1)o zamana kadar sakat olduğu dosyalar ASCII sanat ağacını göstermektedir grep(1).
von

1
Evet, kullanacaksanız tree, find . type -fhangisini daha hızlı kullanacağınızı da kullanabilirsiniz .
terdon

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.