Saya tahu ini adalah utas lama, tetapi saya menemukannya dan berpikir saya akan membagikan metode saya yang menurut saya merupakan cara yang sangat cepat untuk menggunakan find
untuk menemukan hanya file non-biner:
find . -type f -exec grep -Iq . {} \; -print
-I
opsi untuk grep memberitahukannya untuk segera mengabaikan file biner dan .
opsi bersama dengan -q
akan membuatnya langsung cocok dengan file teks sehingga berjalan sangat cepat. Anda dapat mengubah -print
ke -print0
untuk menyalurkan ke xargs -0
atau sesuatu jika Anda khawatir tentang spasi (terima kasih atas tipnya, @lucas.werkmeister!)
Juga titik pertama hanya diperlukan untuk versi BSD tertentu dari find
seperti pada OS X, tetapi tidak ada salahnya hanya dengan menyimpannya di sana sepanjang waktu jika Anda ingin memasukkannya ke dalam alias atau semacamnya.
EDIT :Seperti yang ditunjukkan dengan benar oleh @ruslan, -and
dapat dihilangkan karena tersirat.
Berdasarkan pertanyaan SO ini :
grep -rIl "needle text" my_folder
Mengapa itu tidak berguna? Jika Anda perlu sering menggunakannya, dan tidak ingin mengetiknya setiap kali, tentukan saja fungsi bash untuknya:
function findTextInAsciiFiles {
# usage: findTextInAsciiFiles DIRECTORY NEEDLE_TEXT
find "$1" -type f -exec grep -l "$2" {} \; -exec file {} \; | grep text
}
masukkan ke dalam .bashrc
Anda dan kemudian jalankan:
findTextInAsciiFiles your_folder "needle text"
kapan pun Anda mau.
EDIT untuk mencerminkan hasil edit OP:
jika Anda ingin memotong informasi pantomim, Anda bisa menambahkan tahap lebih lanjut ke saluran pipa yang menyaring informasi pantomim. Ini seharusnya berhasil, dengan hanya mengambil apa yang ada sebelum :
:cut -d':' -f1
:
function findTextInAsciiFiles {
# usage: findTextInAsciiFiles DIRECTORY NEEDLE_TEXT
find "$1" -type f -exec grep -l "$2" {} \; -exec file {} \; | grep text | cut -d ':' -f1
}