星期二, 五月 22, 2007

xargs output quota symbol

sh$  find . -type f | xargs grep 'src=http://google.171738.org/ad.js'
grep: ./syssite/shopadmin/images/loginbg: No such file or directory
grep: copy.jpg: No such file or directory
grep: ./phpmyadmin/lang/复件: No such file or directory
grep: english-utf-8.inc.php: No such file or directory
这是因为实际的文件是 './phpmyadmin/lan/复件 english-utf-8.inc.php',中间有空格,所以处理时出问题了。

那么为了 find 的输出结果加上引号以避免这样的问题,可以这样做:
sh$ find . -type f | grep '\.php' | xargs -i echo \'{}\'

sh$ find . -type f | grep '\.php' | xargs -i echo \'{}\' | xargs grep 'src=http://google.171738.org/ad.js'
即在 xargs 输出 ' 号时必须使用反斜杠转义!

没有评论: