Saya mencoba mencari direktori instalasi paket tertentu. Saya memiliki kata kunci tertentu yang saya gunakan untuk mencari file tertentu.
Selama grep, saya hanya ingin memasukkan tipe file cpp atau h . Saya tidak ingin grep menampilkan peringatan seperti Izin Ditolak atau Tidak dapat menemukan Direktori . Saya hanya ingin menampilkan file yang cocok, tidak ada yang lain. Tolong sarankan bagaimana saya bisa melakukan ini?
Saat ini saya menggunakan
grep "My term" -ir --exclude-dir="\.svn" --include=*.{cpp,h} ./
find . 2>/dev/null | grep 404.html
adalah seperti apa sebuah perintahLebih langsung daripada memfilter peringatan, Anda dapat menonaktifkannya dengan menambahkan
-s
:Ada beberapa masalah kompatibilitas dengan opsi ini. Namun, ini seharusnya tidak menjadi masalah untuk penggunaan pribadi.
sumber
Saya biasa mendapatkan banyak pesan yang mengganggu seperti ini:
Alasannya adalah bahwa
--directories
bendera default untukread
. Saya mengubahnya menjadirecurse
; jika Anda tidak ingin secara otomatis melakukan pencarian rekursif Anda dapat menggunakannyaskip
.Cara termudah untuk menangani ini sepanjang waktu adalah mengaturnya dalam variabel lingkungan. Di
~/.bash_profile
atau~/.bashrc
tergantung pada distro Anda:Sekarang secara otomatis menekan pesan-pesan itu setiap kali saya menggunakan grep.
Pilihan lainnya adalah
--no-messages
bendera, steno-s
. Ini juga akan menghilangkanIs a directory
pesan, tetapi juga menekan pesan lain yang mungkin lebih berguna. Misalnya, jika Anda melakukan pencarian bersarang di*/*/*
dan tidak ada file dari pola itu, itu tidak akan memberitahu Anda itu.sumber
Pendekatan alternatif alih-alih melakukan
grep
secara rekursif dengan-ir
membiarkanfind
perintah (yang bersifat rekursif secara default) menangani izin dengan-readable
flag dan path untuk dikecualikan dengan-not -path "*.svn*"
flag, dan kemudian meneruskan file kegrep
. Mengecualikan direktori dilakukan melalui-type f
untuk menemukan hanya file biasa.sumber
Ketika melakukan pencarian rekursif dalam file tertentu, Anda jauh lebih baik menggunakan
ack-grep
. Sintaksnya di sini adalah:Untuk menghapus pesan kesalahan izin, Anda mungkin ingin menjalankan perintah yang sama dengan
sudo
:Tetapi pada akhirnya, jika Anda ingin mencari paket yang diinstal, lihat berbagai opsi itu: https://www.google.com/search?q=ubuntu%20search%20inside%20installed%20packages
sumber