GNU/Linux >> Belajar Linux >  >> Linux

Perintah Linux:Bagaimana cara 'menemukan' hanya file teks?

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
}

Linux
  1. Cara Menggunakan Perintah find Linux untuk Menemukan File

  2. Bagaimana menemukan file teks yang tidak mengandung teks di Linux?

  3. Bagaimana cara menemukan semua file yang berisi teks tertentu di Linux?

  1. Cara menggunakan perintah grep Linux

  2. Cara Mengganti Nama File di Linux

  3. Bagaimana menemukan file yang berisi dua string bersama di Linux?

  1. Cara Menggunakan Perintah Grep untuk Menemukan Teks di File

  2. Cara Menemukan File dengan Perintah fd di Linux

  3. Cara Menemukan Teks Tertentu menggunakan GREP di Linux