Saya ingin mencari file di Macbook saya dengan nama file: abc.dmg
. Saya sudah mencoba menggunakan lampu sorot, tetapi tidak menemukannya. Ketika saya mencoba menemukan, dan menggunakan find -name abc.dmg -path /
:, saya mendapatkan kesalahan kembali.
Apa sintaks yang tepat untuk menemukan file dengan nama file dengan perintah find di terminal Mac OSX?
Jawaban:
Dalam bentuknya yang paling sederhana,
find
dibutuhkan satu parameter: path. Dalam bentuknya yang benar-benar bermanfaat, dibutuhkan jalur yang diikuti oleh kriteria penyempitan.Jadi, Anda ingin:
find
(program)/
(jalan), dan-name abc.dmg
(kriteria).sumber
find
penting . Jika harusfind [path]+ [selection, grouping, and actions]
.find . -name '*.csv'
misalnya bekerja untuk saya dengan wildcard. OP juga bisa menggunakanfind . -name '*.dmg'
untuk memeriksa direktori saat ini, dengan asumsi dia berada di/
.sumber
The
mdfind
perintah menggunakan database Spotlighthttp://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html
sumber
Anda bisa menggunakan
locate
perintah.sumber
osx
tag. slocate db tidak mengisi secara default.locate
danmdfind
keduanya gagal, kemungkinan file tidak ada di mesin Anda. Atau tidak disebutkan bagaimana menurut Anda namanya. mungkin mencari SEMUA DMG mungkin langkah Anda selanjutnya?Cara paling sederhana (yang saya yakin Anda sudah mencoba, tapi hei, biarkan saya menambahkannya ke utas) adalah dengan memasukkan abc.dmg ke dalam kotak pencarian di kanan atas jendela pencari apa pun, lalu pilih "File Nama "dari opsi di Bilah Pencarian yang muncul.
Tidak perlu untuk terminal.
Juga ingat bahwa Spotlight hanya mengindeks direktori yang ditentukan dalam panel kontrol Spotlight dan abc.dmg mungkin tidak ada di salah satu direktori tersebut.
Koreksi saya jika saya salah, tetapi saya pikir perintah find perlu tahu apa yang akan dihasilkan:
... harus mencetak hasil apa pun ke terminal (termasuk kesalahan izin).
Jika Anda tidak ingin kesalahan izin dan ingin mencari direktori Pengguna lain maka:
sumber
Anda dapat menggunakan fungsi perintah berikut untuk menemukan dan membuka file yang relevan dengan cepat. Saya menemukan ini lebih mudah daripada mengetik string panjang query di jendela sorotan.
Tambahkan fungsi berikut di
~/.bash_aliases
.}
Sekarang,
source ~/.bash_aliases
buka atau buka fungsi terminal load baru. Untuk mencari file dengan kata-kata, pie, dan 2016 di mana saja dalam nama file, lakukanTidak perlu menambahkan atau menambahkan
*
permintaan Anda sebagai pola pencarian,'*$1*'
sudah menandai entri kartu liar di awal dan akhir permintaan Anda. Tambahancd
adalah untuk case sensitif dan mengabaikan tanda diakritik, misalnya,fred
akan mengembalikan keduanya, Frédéric dan FrEDeric.findpaper
akan membatasi pencarian untuk hasil di bawah jalur tertentu (rekursif) sementaraopenpaper pie*201
akan membuka (atau pertama dari beberapa hasil) hasil pencarian atauopenpaper pie*201 3
akan membuka entri hasil ketiga. Untuk menghindari membuka skrip bash atau file non-dokumen lainnya, Anda dapat membatasi konten file dengan atribut pencarian tambahan. Lihat Sintaks Ekspresi Kueri Metadata File dan https://ss64.com/osx/mdfind.html untuk menggunakan operator pencarian lainnya.sumber
Tangkap daftar setiap file pada disk Anda sebagai root dari /
Cat seluruh file melalui grep untuk mencari seluruh drive:
Gunakan ekspresi reguler untuk hanya menampilkan file .jpg dan .dmg:
Hasil:
... dll. Sayangnya juga akan menangkap semua disk yang dipasang sehingga yang terbaik untuk mengeluarkan Time Machine yang mereka punya banyak tautan. Jadi di jendela lain saya jalankan
watch tail -n 10 ~/file-list.txt
yang menunjukkan kepada saya di mana itu berada di hack pengecut saya!sumber
sudo find / > ~/file-list.txt
tampaknya lebih baik daripada menjalankan seluruh shell sebagai root. (2)find *
akan melewati objek tersembunyi (titik) (jika ada) di/
. (3)&>
adalah bashism. (4) Penggunaan yang tidak bergunacat
. (5)grep abc.dmg
akan mencetak misalnya/foo/bar/123abcXdmg456/baz/whatever
. // Satu hal yang baik yang dibawa jawaban Anda ke utas ini (dan jawaban lainnya tidak) adalah pendekatan di mana pengguna menjalankanfind
sekali dan kemudian menggunakan kembali hasil yang disimpan berkali-kali tanpa menanyakan sistem file berulang kali. Keuntungan potensial ini tidak beraksen.