如何使用wget或curl获取可用文件列表?

时间:2012-05-13 11:28:03

标签: bash curl terminal wget

我想知道是否可以执行ls的网址,因此我可以看到网站中有哪些* .js文件可用。类似的东西:

wget --list-files -A.js stackoverflow.com

并获取

ajax/libs/jquery/1.7.1/jquery.min.js
js/full.js
js/stub.js
...

2 个答案:

答案 0 :(得分:5)

除非服务器本身提供此类列表,否则您无法执行等效的ls。但是,您可以检索index.html,然后检查包含内容,例如

之类的东西
wget -O - http://www.example.com | grep "type=.\?text/javascript.\?"

请注意,这依赖于以某种方式格式化的HTML - 例如,在各个行中使用包含。如果你想正确地做到这一点,我建议解析HTML并提取包含这种方式的javascript。

答案 1 :(得分:1)

让我们将此打开目录(http://tug.ctan.org/macros/latex2e/required/amscls/)视为我们的实验对象。该目录属于the Comprehensive TeX Archive Network,因此不必担心下载恶意文件。

现在,让我们假设我们要列出所有扩展名为pdf的文件。我们可以通过执行以下命令来做到这一点。

下面显示的命令会将wget的输出保存在文件main.log中。因为wget发送每个文件的请求,并打印有关该请求的信息,所以我们可以grep的输出来获取属于指定目录的文件列表。

wget \
  --accept '*.pdf' \
  --reject-regex '/\?C=[A-Z];O=[A-Z]$' \
  --execute robots=off \
  --recursive \
  --level=0 \
  --no-parent \
  --spider \
  'http://tug.ctan.org/macros/latex2e/required/amscls/doc/' 2>&1 | tee main.log

现在,我们可以使用pdf列出扩展名为grep的文件。

grep '^--' main.log
--2020-11-23 10:39:46--  http://tug.ctan.org/macros/latex2e/required/amscls/doc/
--2020-11-23 10:39:47--  http://tug.ctan.org/macros/latex2e/required/amscls/doc/
--2020-11-23 10:39:47--  http://tug.ctan.org/macros/latex2e/required/amscls/doc/amsbooka.pdf
--2020-11-23 10:39:47--  http://tug.ctan.org/macros/latex2e/required/amscls/doc/amsclass.pdf
--2020-11-23 10:39:47--  http://tug.ctan.org/macros/latex2e/required/amscls/doc/amsdtx.pdf
--2020-11-23 10:39:47--  http://tug.ctan.org/macros/latex2e/required/amscls/doc/amsmidx.pdf
--2020-11-23 10:39:48--  http://tug.ctan.org/macros/latex2e/required/amscls/doc/amsthdoc.pdf
--2020-11-23 10:39:48--  http://tug.ctan.org/macros/latex2e/required/amscls/doc/thmtest.pdf
--2020-11-23 10:39:48--  http://tug.ctan.org/macros/latex2e/required/amscls/doc/upref.pdf

请注意,我们还可以获取目录中所有文件的列表,然后在命令的输出上执行grep。但是,这样做显然要花费更多时间,因为显然每个文件都发送了一个请求。通过使用--accept,我们可以使wget仅对我们感兴趣的文件发送请求。

最后但并非最不重要的是,文件的大小保存在文件main.log中,因此您可以检查该文件中的信息。