Mencari Mac Melalui Terminal?

22

adakah perintah untuk mencari Mac Anda menggunakan terminal? Saya mencoba menggunakan grep untuk mencari tetapi tampaknya agak tidak responsif dan tidak ada yang muncul.

Sebagai contoh, saya akan mengetik "grep Files" (Nama folder) dan hanya mencetak baris kosong dan tidak ada yang terjadi.

JFW
sumber
kemungkinan duplikat Cari melalui file teks di Mac OS X
Chealion
Saya tertarik mencari melalui semua jenis file; Tidak harus mengecualikan file teks tetapi tidak hanya file teks.
JFW

Jawaban:

21

Anda juga dapat menggunakan mdfindperintah untuk melakukan pencarian dengan Spotlight. Info lebih lanjut di sini .

Gunakan mdfind -name searchtermuntuk mengambil file dengan nama searchterm. Gunakan mdfind searchtermuntuk melakukan pencarian pada nama file dan konten.

reg
sumber
25

Jika Anda hanya ingin mencari file dengan nama tertentu, gunakan find

Halaman manual dapat ditemukan di SINI atau dengan mengetik man finddi terminal prompt.

Pada dasarnya, find akan mencari kriteria pertemuan file yang Anda tentukan secara rekursif. Contoh termudah:

find . -name file_name -print

Itu akan mencari file bernama "file_name" mulai di direktori saat ini dan mencari di bawah ini dan mencetak file dengan nama itu.

find ~ -name ".DS_Store" -delete

Itu akan menemukan semua file .DS_Store dan menghapusnya.

Anda dapat mencari berdasarkan nama, regex, tanggal. Anda dapat bertindak atas file dengan cara Unix dengan -execpredikat.

Anda juga dapat menggunakan find sebagai awal dari rangkaian tindakan yang lebih kompleks. Contoh:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

Akan menemukan semua file dengan ekstensi .m4a atau .mp3

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

Akan memberi Anda hitungan file-file itu.

drewk
sumber
Jika -printmerupakan satu-satunya predikat, maka dapat dihilangkan; juga, ada globbing sederhana yang tersedia. Dengan demikian menemukan semua .txtfile di bawah direktori fooakan dilakukan denganfind foo -name \\*.txt
Norman Gray
@Yoshi: Itu benar-benar salah. Mengetik find .IS rekursif dari cwd. Coba ketikkan find .direktori root Anda!
drewk
Buruk saya bisa bersumpah itu tidak rekursif tapi mungkin server telah chocked -shrug-
nuala
5

Jika Anda ingin mencari melalui seluruh folder, cukup gunakan -r on grep:

grep -r pattern folder/to/search

Dengan find, Anda juga dapat menggunakan xargs:

find folder/to/search -name '*.txt' | xargs grep pattern

atau untuk memastikan bahwa Anda mencari dua file sekaligus dan karenanya memiliki nama file yang ditentukan:

find folder/to/search -name '*.txt' | xargs grep -n2 pattern
Eric Darchis
sumber
2

grepmengharapkan pola dan filespec. Jika ada yang hilang maka ia menggunakan apa yang diteruskan sebagai pola, dan menunggu data untuk mencari melalui input standar.

Jika Anda ingin menggunakan filespec yang lebih kompleks, gunakan find.

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print
Ignacio Vazquez-Abrams
sumber
Saya pada dasarnya hanya ingin menemukan file yang memiliki nama yang saya masukkan ke dalam perintah.
JFW
Dalam hal ini Anda tidak perlu menggunakan -execpredikat masuk find.
Ignacio Vazquez-Abrams