Cara menggunakan ack untuk mencari nama file

15

Saya sudah mulai menggunakan ack yang jauh lebih cepat daripada grep. Namun menggunakan ack saya ingin mencari nama file daripada isi file. Apakah ada cara untuk melakukan itu?

Nadal
sumber

Jawaban:

16

Gunakan alat yang tepat untuk pekerjaan yang tepat. Jika Anda ingin mencari nama file, gunakan 'temukan':

$ # search for all *.txt file in current directory
$ find . -iname "*.txt"
Lie Ryan
sumber
1
sangat benar. "Begitu Anda memegang palu di tangan Anda semuanya mulai terlihat seperti paku" :)
akira
2
Yah, ack (dan grep) lebih baik karena Anda tidak harus eksplisit tentang regex kecuali Anda mau. Saya biasanya hanya melakukanfind . | ack whatev.ext
Ehtesh Choudhury
Ini berfungsi untuk menemukan direktori juga.
Pratik Khadloya
1
find dan ack berperilaku berbeda karena ack menyaring banyak hasil secara default (isi direktori kontrol versi, objek yang dikompilasi dalam repositori sumber) yang akan dimasukkan oleh find. Palu terbaik tergantung pada hasil yang Anda inginkan.
Joshua Goldberg
1
Ini tidak menjawab pertanyaan ...
lajarre
23
ack -g REGEX

Cetak file di mana jalur relatif + nama file cocok dengan REGEX

Danil Kutkevich
sumber
1
tambahkan [^/]*$ke REGEX Anda untuk mencari dalam nama file saja
simon
7

Saya setuju masuk akal untuk menggunakan find jika Anda hanya mencari file * .txt. Namun, ack memiliki fitur pendeteksi tipe file yang kuat, sehingga Anda dapat menggunakannya

ack -f --perl

yang akan menemukan semua file Perl, berdasarkan nama file (* .pm, * .pl, * .t dan * .pod) dan baris shebang.

Andy Lester
sumber
1

Anda dapat melakukan :

ack -f | ack "filename.ext"
Olivier
sumber