Bagaimana menemukan jalur file berdasarkan namanya?


22

Saya mencoba mencari settings.xmlfile di mesin Ubuntu saya. Saya tidak tahu di mana itu, dan direktori mana itu.

Saya mencoba menggunakan ini -

ls -R | grep settings.xml

Tapi itu tidak menunjukkan saya path lengkap di mana itu .. Apakah ada perintah lain yang perlu saya coba yang dapat memberi saya path lengkap?


4
Setiap kali Anda berpikir solusinya adalah mengurai output ls, Anda hampir pasti melakukannya dengan cara yang salah .
terdon

Jawaban:


23

Untuk pencarian cepat (tetapi tidak definitif):

locate -br '^settings.xml$'

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

The ^dan $memastikan bahwa hanya file yang namanya settings.xmldan tidak file yang namanya mengandung settings.xml akan dicetak.

Anda mungkin perlu menjalankan pertama kali: updatedb(as root) untuk memperbarui / membangun basis data locate.


@terdon, Anda mengejutkan saya, saya belum pernah melihat man locatesebelumnya !!! dengan asumsi itu hanya alat pencarian sederhana. Terima kasih banyak.
user.dz

Ya, itu reaksi saya yang pertama kali saya baca halaman manual :)
terdon

4
perlu dicatat peran updatedbperintah ini - locateseringkali gagal tanpa itu, bagi saya, bagaimanapun
rm-vanda

@ rm-vanda, saya telah memperbarui jawaban untuk menyebutkan updatedb. Terima kasih.
user.dz

4
locate '*/settings.xml'mungkin lebih portabel di antara berbagai implementasi yang berbeda locate(jika tersedia).
Stéphane Chazelas

15

Pencarian lambat tapi stabil melalui sistem file, tetapi Definitive.

find / -xdev -name settings.xml

Ini akan memakan waktu dan Anda mungkin mendapatkan beberapa kesalahan izin tetapi itu akan sampai di sana. Jika Anda punya ide lain di mana letaknya, ubah direktori pertama dari /menjadi/where/you/guess


4
Menambahkan 2>/dev/nullke akhir perintah akan menekan semua output kesalahan (dengan mengarahkan stderr ke perangkat nol).
Tanner Swett

2
-xdev: Jangan turun direktori di filesystem lain.
Pablo A

1

Contoh:

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

0

tree adalah cara lain yang baik, jika Anda tidak yakin persis apa yang Anda cari, dan tampaknya sedikit lebih cepat-:

tree -f / | grep settings.xml

Bendera lain yang bermanfaat: -ipada grep akan mengabaikan case, -huntuk dibaca manusia di pohon -

- halaman manual memiliki banyak opsi berguna -!


6
Bukan ide yang baik, tree(1)menunjukkan pohon ASCII-art dari file, yang kemudian dimutilasi oleh grep(1).
vonbrand

1
Ya, jika Anda akan menggunakan tree, Anda juga dapat menggunakan find . type -fyang akan lebih cepat.
terdon

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.