Salah satu praktik umum saya adalah melakukan greps pada semua file dari jenis tertentu, misalnya, menemukan semua file HTML yang memiliki kata "rumpus" di dalamnya. Untuk melakukannya, saya gunakan
find /path/to -name "*.html" | xargs grep -l "rumpus"
Terkadang, find
akan mengembalikan file dengan spasi dalam namanya seperti my new file.html
. Namun, ketika xargs
meneruskan ini grep
, saya mendapatkan kesalahan ini:
grep: /path/to/bad/file/my: No such file or directory
grep: new: No such file or directory
grep: file.html: No such file or directory
Saya bisa melihat apa yang terjadi di sini: baik pipa atau xargs
memperlakukan ruang sebagai pembatas antara file. Namun, untuk kehidupan saya, saya tidak tahu bagaimana cara mencegah perilaku ini. Bisakah itu dilakukan dengan find
+ xargs
? Atau apakah saya harus menggunakan perintah yang sama sekali berbeda?
Jika versi find dan xarg pada sistem Anda tidak mendukung
-print0
dan-0
beralih (misalnya pencarian dan xarg AIX), Anda dapat menggunakan ini:Di sini sed akan mengurus pelarian ruang untuk xargs.
sumber
find
semuanya lagi.