Saya menggunakan Opensuse 10.3 dan ingin tahu alat baris perintah untuk mencari frasa dalam banyak file pdf di dalam direktori. Di Windows XP, pencarian Explorer memungkinkan ini tetapi terlalu lambat. Apakah ada tips grep di sini?
search
grep
windows-search
tukang es
sumber
sumber
Jawaban:
sumber
Di Linux dan Windows, Anda dapat menggunakan Acrobat Reader, yang memiliki perintah untuk mencari banyak file.
Di Linux, ada Recoll, yang akan membangun indeks file pdf Anda (dan banyak lagi) saat pertama kali Anda menjalankannya. Setelah indeks dibuat, pencarian kata harus sangat cepat; pencarian frase harus masuk akal. Pastikan
pdftotext
perintah diinstal sebelum Anda memulai Recoll; di bawah Debian dan Ubuntu, ada dalampoppler-utils
paket, saya tidak tahu tentang Suse.Atau Anda bisa langsung mengonversi file menjadi teks dan menggunakan grep pada file teks dengan perintah di bawah ini.
sumber
pdftotext
(alat yang seperti Recoll akan lakukan secara otomatis).Adobe Reader X melakukan pekerjaan dan tidak memungkinkan pencarian di bawah seluruh direktori dan subdirektori, tidak hanya di dalam file, tetapi bukan program baris perintah.
sumber
recoll
diinstal pada debian dengan mudah, sekarang mencoba membuatnya dapat digunakan untuk karyawan berbasis windows saya.Untuk secara rekursif mendaftarkan semua file di direktori home Anda yang memiliki ekstensi file PDF dan yang berisi garis yang cocok dengan regex '
[iI]n Haskell
' misalnya, Anda dapat mengeluarkan:Catatan:
-exec
atauxargs
karena, untuk alasan keamanan , saya pikir itu praktik yang baik untuk membiasakan diri melakukannya. Mengubah '-execdir
' menjadi '-exec
' dan '$PWD${0#?}
' menjadi '$0
' akan mencapai hasil yang sama dalam hal ini../
'). Dalam contoh ini, jalur yang cocok dengan semua mutlak (yaitu dimulai dengan '/
') karena '~/
' diperluas ke jalur absolut dari direktori home pengguna saat ini, dan itu adalah satu-satunya argumen jalur.$0
' dan '$1
' adalah parameter posisi yang digunakan sedemikian rupa untuk mengutip argumen dengan benar. Jika ini tidak dilakukan dengan benar, perintah rentan terhadap nama file yang sewenang-wenang.${0#?}
' menghapus karakter pertama$0
, yaitu '.
'.Untuk mencetak setiap baris yang cocok dilanjutkan dengan nama file:
Varian ini menggunakan '
-H
' alih-alih '-l
', dan label dengan nama file daripada nama file. '${0:2}
' menghapus dua karakter pertama$0
, yaitu './
', tetapi tampaknya tidak dikenali olehsh
.Tentu saja, sesuaikan dengan kebutuhan Anda.
sumber