Bagaimana cara mencari string di dalam file dalam folder?

98

Apakah ada utilitas untuk mencari string di dalam file ASCII untuk menghindari pencarian baris perintah?

Bagaimana cara membuat pencarian baris perintah, misalnya untuk string "test" di dalam semua file di direktori /var/x/?

Nuno
sumber
15
Maksud Anda tanpa menggunakan baris perintah? Karena alat terbaik untuk itu tetap grep ...
alci
Di CLI The Silver Searcher mungkin melakukan pekerjaan yang lebih baik.
Pablo A

Jawaban:

78

Anda dapat menggunakan searchmonkey. Alat ini tersedia di repositori, jadi Anda bisa melakukannya

sudo apt-get install searchmonkey

Di sisi lain, pencarian baris perintah dengan grep benar-benar dimaksudkan untuk itu ...

Ini adalah screenshot dari searchmonkey

masukkan deskripsi gambar di sini

alci
sumber
jatuh karena terlalu banyak memuat :(
WiredIn
1
Saya memiliki masalah dengan searchmonkey. Ini tidak dapat dipercaya dalam arti bahwa itu memungkinkan slip banyak kejadian
tony gil
bagaimana cara menjalankan "searchmonkey" dari GUI? setelah diinstal menggunakan baris perintah, saya lebih suka tidak menggunakan baris perintah
Echeban
153

Saya berasumsi bahwa pertanyaan pertama Anda adalah tentang alternatif GUI untuk grepperintah. Saya tidak dapat membantu Anda dengan itu, saya selalu menemukan baris perintah sangat efektif.

Sedangkan untuk baris perintah, coba

grep "test" /var/x/*

Jika Anda ingin mencari secara rekursif (yaitu tidak hanya di /var/x/, tetapi juga di subdirektori daripadanya), lakukan

grep -R "test" /var/x/

Untuk menghindari grepping file yang grep anggap sebagai biner, gunakan -Iopsi:

grep -I "test" /var/x/

Jika grep berpikir bahwa suatu file adalah biner (berdasarkan beberapa byte pertama dari file tersebut), ia akan menganggapnya tidak cocok alih-alih menelusuri seluruh file.

Januari
sumber
1
Apakah akan berfungsi jika folder tersebut berisi beberapa file non-ascii?
Anwar
1
Nah, grep juga akan mencoba mencari string dalam sebuah file biner, dan melaporkannya jika cocok:Binary file file.jpg matches
Januari
1
@ January Ketika file biner dibaca sebagai teks, file tersebut seringkali memiliki "garis" yang sangat panjang (karena karakter atau urutan karakter yang akan diinterpretasikan untuk menunjuk akhir baris mungkin tidak muncul untuk waktu yang lama, atau selamanya). Bergantung pada cara utilitas pencarian teks diimplementasikan, ini dapat menyebabkan masalah kinerja jika setiap "baris" dibaca sepenuhnya ke dalam memori dan kemudian diperiksa untuk melihat apakah itu cocok dengan string pencarian (yang merupakan cara yang masuk akal untuk grepdikodekan, meskipun saya tidak tahu apakah Ubuntu grepditulis seperti itu).
Eliah Kagan
1
"grep -i" untuk pencarian case-sensitive
Czarek Tomczak
3
Harus ada *setelah tebasan terakhir di jalan atau grep tampaknya tidak melakukan pekerjaan apa pun di 14,04
DavidScherer
20

Anda dapat menggunakan regexxer itu adalah alat mencari / mengganti GUI yang bagus untuk ekspresi reguler.

Anda dapat mengunduh dengan:

sudo apt-get install regexxer

masukkan deskripsi gambar di sini

Seth
sumber
itu super cepat, tetapi masalah yang saya miliki dengan aplikasi ini adalah: 1. tidak memiliki mode readonly, jadi saya tidak sengaja mengganti atau menghapus apa pun 2. itu menunjukkan teks, tetapi tidak akan pindah ke spesifik garis yang polanya telah cocok. (Saya menggulir sekitar 2000 baris kode untuk menemukan apa yang saya cari setelah mengubah warna menjadi merah terang!)
Mehrad Mahmoudian
6

Coba Recoll, GUI terbaik yang pernah saya gunakan. Untuk menginstal recoll di semua versi Ubuntu yang saat ini didukung buka terminal dan ketik:

sudo apt install recoll

Diperlukan waktu untuk mengindeks file terlebih dahulu (Anda dapat menentukan jalur daftar hitam atau ekstensi atau pantomim).

pengguna244846
sumber
Saya dapat mengkonfirmasi bahwa Recoll benar-benar dunia lain sehubungan dengan gnome-search-toolatau search-monkey. Ini menggunakan Xapian, sehingga dapat memeriksa dan mengindeks dokumen kata (baik .doc dan .docx), file pdf, folder mail, dll.
Avio
Eh, ini tersedia melalui deb packaging ( sudo apt install recoll) dan ia melakukan tugasnya di mana bahkan grep gagal, misalnya dengan dokumen .docx yang dikompres dengan kompresi pkzip.
Avio
perhatikan bahwa recollmembutuhkan indeks bangunan terlebih dahulu.
Yrogirg
5

Anda dapat menggunakan grepperintah dari terminal:

grep -r string *

Perintah ini akan menemukan semua kemunculan "string" di semua file di bawah direktori saat ini (atau subdirektori).

Untuk file tersembunyi, Anda dapat menggunakan:

grep -r string ..

ingin tahu
sumber
2

Sayangnya grep melakukan pekerjaan yang sangat buruk dalam mencari di dalam file Word (.doc), tetapi Anda dapat menyalurkan output catdoc ke grep. Saya bukan programmer tetapi skrip kecil ini berfungsi dengan baik untuk saya:

#!/bin/bash
export GREP_OPTIONS='--color=auto'
echo -e "\n
Welcome to scandocs. This will search .doc (NOT .docx) files in this directory for a given string. \n
Type in the text string you want to find... \n"
read response
find . -name "*.doc" | 
while read i; do catdoc "$i" | 
grep -iH --label="$i" "$response"; done

Semua perbaikan dan saran diterima!

Muntah
sumber
1
Pertanyaan ini adalah tentang aplikasi grafis dan file teks biasa. Saya tidak yakin apa grepdan .docharus dilakukan dengan pertanyaan itu.
Andrea Corbellini
Sepertinya OK, lihat jawaban terperinci Januari tentang grep.
aquaherd
2

Saya baru saja merilis alat sederhana untuk melakukan pekerjaan itu. Diperkirakan terutama untuk pengembang perangkat lunak, ia memiliki karakteristik (unik?) Membuka beberapa file di jendela yang sama. Ini menyajikan hasil di browser menggunakan editor Ace (direkomendasikan!) Atau html textarea. Ini adalah alat berbasis java sehingga berjalan di windows maupun di linux.

saksikan berikut ini!

https://sourceforge.net/projects/queacetu.gastona.p/

Alejadro Xalabarder
sumber
1

per https://askubuntu.com/a/1141367/47073

Anda dapat menggunakan mate-search-tool, yang merupakan hal yang sama seperti gnome-search-toolyang telah dihapus. Saya punya masalah dengan searchmonkey, itu hilang beberapa hasil dan lambat, jangan rekomendasikan.

Untuk menginstal mate-search-tool:

sudo apt install mate-utils
mate-search-tool
Yrogirg
sumber
0

Anda dapat menggunakan opsi Teks Luhur Find in Files dari Findmenu untuk mencari string di dalam file dari folder.

Untuk Menginstal Sublime Text 3

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

Anda juga dapat mengikuti pertanyaan ini untuk cara lain yang mungkin menginstal Sublime di Ubuntu .

Untuk mencari semua file untuk string dari folder di Sublime Text Anda dapat mengikuti pertanyaan ini untuk jawaban yang lebih jelas.

MAK Ripon
sumber