Para um projeto em que estou trabalhando, preciso obter uma lista de todos os URLs em uma determinada pasta de um domínio, ou melhor ainda, todos os URLs correspondentes a uma expressão regular.
Eu quero fazer isso usando o bash para evitar a instalação de programas que eu nunca vou usar, mas se houver uma solução usando programas que eu já tenha, como o FireFox, vá em frente e me diga.
Obrigado pelo seu tempo.
Eu descobri como gerenciar isso no meu caso, muito deve ser o mesmo para qualquer outra pessoa, você deve poder adaptar esse processo para trabalhar com qualquer URL.
Primeiro devemos mudar para um novo diretório para evitar que os arquivos se percam ou sejam mantidos depois que precisarmos deles.
mkdir ~/Desktop/dev
cd ~/Desktop/dev
wget
Next usamos o
wget
comando para encontrar todas as URLs para arquivos e pastas no domínio, para mim o comando foi:wget -o ./urls.txt --spider -r --reject="index.html" --no-verbose --no-parent https://downloads.tuxfamily.org/godotengine/
Basta substituir a URL no comando acima e ele deve criar um arquivo de texto (
urls.txt
) cheio de URLs e um monte de outras bobagens.wget
wget
terá deixado para trás uma pasta chamada qualquer que seja o domínio do seu URL de entrada. Não há informações importantes nesta pasta, então vá em frente e remova-a com orm
comando ou através do seu gerenciador de arquivos.Essa é a parte difícil, recomendo abrir
urls.txt
em uma edição de texto ou que permita encontrar com regexs e abrir regex no seu navegador, agora você tem que construir um . Depois de encontrar uma regex que corresponda às URLs, execute o comando: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
Isso copiará todas as linhas correspondentes à regex para um arquivo de texto (
urls filtered.txt
). Substitua a regex (o bit entre aspas) por sua regex.Depois de tudo isso, você deve ficar com um arquivo de texto de todas as URLs necessárias.