Saya biasanya menggunakan gaya perintah ini untuk menjalankan grep
beberapa file:
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
Apa yang sebenarnya dilakukan adalah membuat daftar setiap file pada sistem, dan kemudian untuk setiap file, jalankan grep
dengan argumen yang diberikan dan nama setiap file.
The -xdev
Argumen mengatakan menemukan bahwa itu harus mengabaikan filesystem lain - ini baik untuk menghindari filesystem khusus seperti /proc
. Namun itu juga akan mengabaikan sistem file normal juga - jadi jika, misalnya, folder / home Anda berada di partisi yang berbeda, itu tidak akan dicari - Anda perlu mengatakannya find / /home -xdev ...
.
-type f
berarti mencari file saja, sehingga direktori, perangkat, dan file khusus lainnya diabaikan (masih akan muncul kembali menjadi direktori dan dieksekusi grep
pada file dalam - itu tidak akan dieksekusi grep
pada direktori itu sendiri, yang tidak akan berfungsi lagi). Dan -H
opsi untuk grep
memberitahu itu untuk selalu mencetak nama file dalam outputnya.
find
menerima segala macam opsi untuk memfilter daftar file. Misalnya, -name '*.txt'
hanya memproses file yang diakhiri dengan .txt. -size -2M
berarti file yang lebih kecil dari 2 megabita. -mtime -5
berarti file yang dimodifikasi dalam lima hari terakhir. Gabungkan ini bersama dengan -a untuk dan dan -o untuk atau , dan gunakan '('
tanda kurung ')'
untuk ekspresi grup (dalam tanda kutip untuk mencegah shell menafsirkannya). Jadi misalnya:
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
Lihatlah man find
untuk melihat daftar lengkap kemungkinan filter.
Permission denied
kesalahan? Apakah Anda menjalankannya sebagai root atau pengguna biasa?