Cara Menemukan file di FreeBSD

14

Saya mencoba mencari semua salinan example.filenamedi server FreeBSD saya. Apa cara terbaik / termudah / paling efisien untuk melakukan ini?

Ian
sumber
1
Sementara jawabannya akan serupa, Anda mungkin ingin mengklarifikasi apakah Anda menggunakan Linux, atau FreeBSD. Mereka bukan hal yang sama.
Greg Hewgill
judul yang diedit untuk membuat OS lebih spesifik
Ian
Ini mungkin harus ditandai FreeBSD, tetapi saya tidak memiliki reputasi untuk melakukannya.
mikl

Jawaban:

18
find / -name example.filename
cletus
sumber
2
Andal, tapi lambat. Terkadang sangat lambat.
dmckee --- ex-moderator kitten
3
flag 'find' lain yang mungkin sesuai, tergantung pada kebutuhan: -type f (tidak akan repot dengan direktori atau symlink dengan nama yang sama) -l (untuk menampilkan detail seperti ukuran file, misalnya jika file memiliki nama tetapi isinya berbeda)
Zac Thompson
19
locate filename

Jauh lebih cepat daripada find, jika Anda menjalankan layanan loc, dan hanya menemukan file yang ada pada saat updatedbterakhir berjalan (biasanya malam sebelum di bawah kendali pekerjaan cron).

Anda dapat menjalankan updatedbdengan tangan, tetapi itu bahkan lebih lambat dari yang finddisarankan oleh cletus , dan membutuhkan root. Saya terkadang memperbarui database dengan tangan setelah menginstal banyak barang baru.

dmckee --- mantan kucing moderator
sumber
3
Locate hanya berfungsi jika Anda memiliki layanan yang berjalan untuk membangun loc db (lupakan apa namanya). Itu juga dapat mengalami penundaan waktu (dalam hal file yang Anda cari mungkin telah ditambahkan sejak build terakhir).
cletus
Suntingan dan komentar menyeberang. Keren. Anda tentu saja benar dalam kedua hal.
dmckee --- ex-moderator kitten
4
Jika Anda menemukan diri Anda melakukan find /atau pada pohon besar lebih dari sekali seminggu, maka menjalankan locatelayanan mungkin bermanfaat, karena locate(1)jauh lebih cepat.
Drew Stephens
@cletus Running sudo periodic weeklymemperbarui locatebasis data. Jalankan setelah instalasi atau unduhan yang mungkin berisi file yang Anda inginkan.
Basil Bourque
2

Jika Anda sudah menemukan loc (alias slocate), maka

locate example.filename

loc menjalankan pekerjaan cron setiap malam yang mengindeks ulang semua file pada mesin Anda. Itu tidak selalu up to date karena alasan itu.

Paul Tomblin
sumber
2

Terkadang Anda ingin mencari file di level direktori tertentu. Dalam hal ini akan lebih mudah menggunakan wildcard shell:

ls /data/*/example.filename

Jelas ini hanya berfungsi jika Anda memiliki struktur direktori yang kaku.

Jon Ericson
sumber
1

locate

Seperti yang disebutkan lainnya, locateadalah cara cepat untuk menemukan file. Perintah ini menggunakan indeks file dan nama folder yang telah dikompilasi sebelumnya. Database nama ini dicari, alih-alih merayapi melalui sistem file Anda.

locate example.filename 

Agar case-insensitive, tambahkan -i.

locate -i eXAmPle.FileName

Perbarui locatebasis data

Database yang digunakan locateharus mutakhir. Setelah melakukan instalasi atau unduhan yang mungkin berisi file yang Anda inginkan, Anda harus memperbarui locatedatabase.

Basis locatedata pada akhirnya akan diperbarui secara otomatis oleh sistem FreeBSD Anda. Ada satu set tugas-tugas mingguan yang mencakup tugas ini. Tugas-tugas ini tercantum dalam /etc/periodic/weekly/310.locatenaskah.

Cara teraman termudah untuk memaksa pembaruan awal locatedatabase adalah dengan memaksa set tugas mingguan dilakukan sekarang.

sudo periodic weekly

Atau, Anda bahkan bisa memaksa semua pekerjaan rutin dilakukan. Anda mungkin ingin melakukan ini segera setelah menyiapkan sistem FreeBSD baru.

sudo periodic daily weekly monthly

Jika menggunakan jalan lain untuk memperbarui locatebasis data, Anda mungkin mendapat pesan tentang tidak aman, mengungkapkan nama semua file sistem Anda ke pengguna mana pun di sistem FreeBSD. Menggunakan periodicrute menghindari masalah ini.

Basil Bourque
sumber
0

Jika Anda memiliki basis data lokasi yang terbaru, maka cukup:

locate example.filename
Sophie Alpert
sumber
0

Terkadang saya melakukannya


  find . | grep example.filename

mungkin sangat tidak efisien.

kgrad
sumber
Yup, yang cocok dengan semuanya kemudian membuang semuanya kecuali untuk satu nama yang Anda cari. Sebagai gantinya, Anda cukup melakukan 'find -name "example.filename"' yang melakukan hal-hal yang persis sama tanpa terlebih dahulu mencetak semuanya dan tanpa menjalankan proses grep tambahan.
Mihai Limbăşan