(参数列表太长)使用*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,则错误将与-bash: /usr/bin/cat: Argument list too long相同

我希望我有一种方法来逃避这种情况,并能够cat所有的httprobe子域。输出*文件夹中的文件,并将其交给xargs处理。

参数列表太长错误记录在errno(3)(作为E2BIG)中,与GNU bash shell完成的一些执行(2)系统调用有关。使用sysconf(3)和ARG_MAX查询该限制。

您有几种方法:

  • 重新编译Linux内核以提高该限制。
  • 用适当的系统调用写一些小的C程序(2)更合适,或者写一些Python脚本,或者一些GNU脚本,…做相同的
  • 增加一些限制,但适当地使用setrlimit(2)(可能使用shellulimit内置)。

参见GNU bash的文档和源代码

相关内容

  • 没有找到相关文章