(参数列表太长)使用 *cat* 打开大量文件时

(Argument list too long) While opening a large list of files using *cat*

我正在尝试做类似

的事情
cat */httprobe-subdomains.out | xargs -n1 -I{} -t sh -c 'curl -k -i --write-out "\n++++++++++\nResponse Code: %{response_code}\nRedirection URL: %{redirect_url}\nContent Size: %{size_download}" "http://{}" -L >> response/http-{}.out '

响应是

-bash: /usr/bin/cat: Argument list too long

如果我尝试 cat */httprobe-subdomains.out stderr 将是相同的 -bash: /usr/bin/cat: Argument list too long

我希望我有办法摆脱这种情况,并能够将 * 文件夹中的所有 httprobe-subdomains.out 文件都 cat 并交给 xargs 来处理。

参数列表太长 错误记录在 errno(3) (as E2BIG) and related to some execve(2) system call done by your GNU bash shell. Use sysconf(3) 中,ARG_MAX 查询该限制。

你有几种方法:

  • 重新编译您的 Linux kernel 以提高该限制。
  • 使用适当的 syscalls(2) more appropriately, or write some Python script, or some GNU guile 脚本编写一些小的 C 程序,...做同样的事情
  • 增加一些限制,但适当使用 setrlimit(2)(可能使用 shell ulimit 内置)。

另请参阅 GNU bash

的文档和源代码