对于我正在进行的项目,我需要获取某个域的某个文件夹中的所有 URL 的列表,或者更好的是,获取所有与正则表达式匹配的 URL 的列表。
我想使用 bash 来执行此操作,以避免安装任何我永远不会使用的程序,但如果有使用我可能已经拥有的程序(例如 FireFox)的解决方案,请继续告诉我。
感谢您的时间。
答案1
我已经弄清楚了在我的情况下如何管理这个问题,对于其他人来说应该也是一样的,你应该能够调整这个过程以适用于任何 URL。
- 切换到新目录
首先我们应该切换到一个新的目录,以避免文件丢失或在我们需要它们之后被保留。
mkdir ~/Desktop/dev
cd ~/Desktop/dev
- 使用以下方式获取 URL
wget
接下来我们使用该wget
命令来查找域中文件和文件夹的所有 URL,对我来说,该命令是:
wget -o ./urls.txt --spider -r --reject="index.html" --no-verbose --no-parent https://downloads.tuxfamily.org/godotengine/
只需替换上述命令中的 URL,它就会创建一个urls.txt
充满 URL 和一堆其他废话的文本文件()。 - 移除留下的文件夹
wget
wget
将留下一个名为您输入 URL 的域名的文件夹。此文件夹中没有重要信息,因此请继续使用命令rm
或文件管理器将其删除。 - 构建正则表达式来提取实际的 URL
这是最难的部分,我建议urls.txt
在文本编辑器中打开,或者允许使用正则表达式查找并打开正则表达式在浏览器中,现在您必须构建一个。找到与 URL 匹配的正则表达式后,运行命令:
grep -o -E "(https.*\/([0-9](\.[0-9])+)\/(mono\/)?Godot_v\2[-_]stable[_-](mono_)?((win)?(x11[\._])?(osx\.?)?)((32)?(64)?)?((\.exe)?(\.fat)?)\.zip)" ./urls.txt >> urls\ filtered.txt
这会将与正则表达式匹配的所有行复制到文本文件 (urls filtered.txt
)。用您的正则表达式替换正则表达式(引号中的位)。
完成所有这些之后,您将得到一个包含您需要的所有 URL 的文本文件。