Wget
La solución más sencilla sería instalar Wget y ejecutar el siguiente comando:
wget --input-file=gwurls.txt
Wget cambia automáticamente el nombre del archivo de salida si ya existe un archivo con el mismo nombre.
Renombrar
Si elimina el esquema y el host (p. Ej., http://example.com/
) De la URL, puede reemplazar todas las barras con guiones bajos (o cualquier otro carácter) y guardar los archivos así. Para estar seguro, puede reemplazar los guiones bajos preexistentes por guiones bajos dobles.
Con bash, esto debería funcionar:
while read -r URL; do
OUTPUT="${URL#http://example.com/}"
OUTPUT="${OUTPUT//_/__}"
OUTPUT="${OUTPUT//\//_}"
curl --output "$OUTPUT" --url "$URL"
done < gwurls.txt
Cómo funciona:
while read -r URL; do ... done < gwurls.txt
lee el contenido de gwurls.txt línea por línea y almacena la línea completa (sin espacios iniciales o finales) en la URL variable y se ejecuta ...
.
Los tres OUTPUT=...
comandos realizan los reemplazos mencionados utilizando la manipulación de cadenas bash .
curl --output "$OUTPUT" --url "URL"
descarga el archivo y lo almacena con el nombre de archivo deseado.
Estructura de directorios
También es posible volver a crear la estructura de directorios del servidor utilizando un enfoque similar.
Con bash, esto debería funcionar:
while read -r URL; do
OUTPUT="${URL#http://example.com/}"
curl --create-dirs --output "$OUTPUT" --url "$URL"
done < gwurls.txt
Aquí, el --create-dirs
modificador hace que cURL cree el directorio a
si se lee OUTPUTa/1.pdf
.