MichaelB Asked: 2020-05-30 11:02:32 +0800 CST2020-05-30 11:02:32 +0800 CST 2020-05-30 11:02:32 +0800 CST 回显所有匹配正则表达式的 URL 772 对于我正在处理的项目,我需要获取域的某个文件夹中所有 URL 的列表,或者更好的是所有与正则表达式匹配的 URL。 我想使用 bash 来执行此操作,以避免安装任何我最终不会使用的程序,但如果有使用我可能已经拥有的程序的解决方案,例如 FireFox,请继续告诉我。 谢谢你的时间。 bash webserver https 1 个回答 Voted Best Answer MichaelB 2020-06-01T07:18:12+08:002020-06-01T07:18:12+08:00 我想出了如何在我的情况下管理它,对于其他任何人来说应该是一样的,你应该能够调整这个过程以适用于任何 URL。 切换到新目录 首先我们应该切换到一个新目录,以避免文件丢失或在需要后被保留。 mkdir ~/Desktop/dev cd ~/Desktop/dev Get URLs withwget Next 我们使用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 的文本文件。
我想出了如何在我的情况下管理它,对于其他任何人来说应该是一样的,你应该能够调整这个过程以适用于任何 URL。
首先我们应该切换到一个新目录,以避免文件丢失或在需要后被保留。
mkdir ~/Desktop/dev
cd ~/Desktop/dev
wget
Next 我们使用
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
命令或通过文件管理器将其删除。这是困难的部分,我建议
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 的文本文件。