Jika saya memahami Anda dengan benar, inilah yang ingin Anda lakukan:
find . -name '*.py' -print0 | xargs -0 grep 'something' > output.txt
Find
semua file dengan ekstensi py
, grep
hanya baris yang berisi something
dan menyimpan baris output.txt
. Jika file berisi apa pun itu akan diganti.
Edit: Menggunakan -exec:
find . -name '*.py' -exec grep 'something' {} \; > output.txt
Saya memasukkan komentar Chris Downs di sini. Perintah di atas akan menghasilkan grep
eksekusi sebanyak yang find
ditemukan. Namun, jika Anda mengganti ;
dengan a +
, grep
dipanggil dengan output dari find
digabungkan (hingga batas tertentu). Lihat pertanyaan Menggunakan titik koma (;) vs plus (+) dengan exec in find untuk informasi lebih lanjut tentang subjek.
+
alih-alih\;
, itu akan meningkatkan waktu eksekusi secara signifikan (karena akan menggabungkan argumen sebelum eksekusi sampaiARG_MAX
).