UVV*_*UVV 10
使用 GNU 或 OpenBSD grep:
grep -L "string" ./* | grep -c /
Run Code Online (Sandbox Code Playgroud)
另一种POSIX方式:
c=0
for f in *; do
[ -d "$f" ] && continue
{ grep -q string || c=$(($c + 1)); } < "$f"
done
echo "$c"
Run Code Online (Sandbox Code Playgroud)
通过重定向命令组而不是grep单独重定向,我们可以避免将无法打开的文件(例如我们没有读取权限的文件,或者*当前目录中没有非隐藏文件)计为 1。
使用 GNU grep,相当于:
grep -d skip -L foo ./* | grep -c /
Run Code Online (Sandbox Code Playgroud)
请注意,您不能使用,wc -l因为文件名可以由多行组成。其./还避免了与启动文件名的问题-或者是 -(这--不解决)。请注意,它会忽略点文件。