Saya mencari file berdasarkan ekspresi reguler, dan kemudian saya mencoba mencari file tersebut untuk konten. Jadi, misalnya, saya punya sesuatu seperti
#Find all C++ files that match a certain pattern and then search them
find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>"
Masalah yang saya hadapi adalah bahwa beberapa jalur memiliki ruang di dalamnya, yang membingungkan xargs
. Saya tahu bahwa jika saya hanya menggunakan find
, saya bisa menggunakan -print0
argumen (bersama dengan -0
argumen pada xargs
) untuk menjaga xargs dari memperlakukan ruang sebagai pembatas. Apakah ada yang serupa grep
?
Atau apakah saya mendekati masalah ini dengan cara yang salah sepenuhnya? Naif, find
untuk grep
untuk xargs grep
masuk akal bagi saya, tapi aku terbuka untuk pendekatan lain yang menghasilkan hasil yang sama.
xargs
menggunakan-i
parameter, alacat sample.txt | grep "pat t ern" | xargs -i grep "{}"
- kurung kurawal memberi tahu di mana posisi argumen. Manual mengatakan kepada saya bahwa-i
sudah usang dalam mendukung-I
jadi mungkin perlu melihat itu juga.