问题描述
我正在尝试运行以下命令,但出现参数太长错误.你能帮忙吗?
I am trying to run the following command, but gets argument too long error. Can you help?.
HOST# grep -rl 'pattern' /home/*/public_html/*
-bash: /bin/grep: Argument list too long
有没有办法覆盖这个错误并在所有用户 public_html 目录中 grep 我想要的模式匹配文件.同一台服务器上大约有 500 多个用户.
Is there a way to override this error and grep the pattern matching files I want in all users public_html directory. There are around 500+ users in the same server.
推荐答案
使用find
find /home/*/public_html -type f -exec grep -l 'pattern' {} +
+
修饰符使其将文件名分组为可管理的块.
The +
modifier makes it group the filenames in manageable chunks.
但是,您可以使用 grep -r
来完成.这个参数应该是目录名,而不是文件名.
However, you can do it with grep -r
. The arguments to this should be the directory names, not filenames.
grep -rl 'pattern' /home/*/public_html
这将只有 500 多个参数,而不是数千个文件名.
This will just have 500+ arguments, not thousands of filenames.