【问题标题】:How to curl all files recursively如何递归地卷曲所有文件
【发布时间】:2019-07-02 19:19:07
【问题描述】:

这是我目前使用的代码:

xargs -n 1 curl -s -o /dev/null -w "%{http_code} - %{url_effective}\n" < 'file.txt'

这适用于卷曲 file.txt 中的所有 URL 并获取状态代码和被卷曲的 URL。但是,我需要递归地对每个文件执行此操作。

我已经尝试了一些方法,比如这样,但都没有奏效:

xargs -n 1 curl -s -o /dev/null -w "%{http_code} - %{url_effective}\n" < *

多个目录中有大约 3000 个文件。有没有办法递归地做到这一点?

【问题讨论】:

  • 在服务器上递归还是在本地递归?
  • wget 是一个选项吗:wget -r --convert-links -i file_with_urls? (您可能需要也可能不需要 --convert-links)。
  • 文件在我的服务器上,有区别吗?
  • @Roadowl 我没有看到任何内容本身,我只是想获取每个 URL 的响应代码。
  • 你的意思是当发出像上面这样的 wget 命令时,没有执行下载?你有 $HOME/.wgetrc 文件吗?

标签: linux ubuntu curl xargs


【解决方案1】:

假设你的文件列表的名字有这样一条规则:当前工作目录下的file.txt、file1.txt、file2.txt,包括子目录。

您可以使用cat **/file*.txt 命令合并这些文件中的所有链接,然后将其与xargs 合并:

cat **/file*.txt | xargs -n 1 curl -s -o /dev/null -w "%{http_code} - %{url_effective}\n"

祝你好运!

【讨论】:

  • 我会改用&lt; find . -iname "*.txt"
  • @hanshenrik &lt; 接受一个文件列表作为标准输入但一个表达式,它应该是&lt; $(find . -iname "*.txt"),另外,更正我的cat 表达式。
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 2010-11-09
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
相关资源
最近更新 更多