如何解决参数列表太长使用 *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 文件归类,并将其交给 xargs 处理。
解决方法
参数列表太长错误记录在 errno(3)(如 E2BIG
)中,并且与您的 {{3} 完成的某些 execve(2) 系统调用有关} 壳。使用 GNU bash 和 ARG_MAX
查询该限制。
您有几种方法:
- 重新编译您的 Linux sysconf(3) 以提高该限制。
- 使用适当的 kernel 更合适地编写一些小的 C 程序,或者编写一些 syscalls(2) 脚本,或者一些 Python 脚本,...做同样的事情
- 增加一些限制,但要适当使用 GNU guile(可能使用内置的 shell
ulimit
)。
另请参阅 setrlimit(2)
的文档和源代码版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。