
Me gustaría poder escribir un script bash para actualizar automáticamente mis extensiones de MediaWiki y creo que usaré este sitio web.https://extdist.wmflabs.org/dist/extensions/para hacerlo. Pero como puede ver allí, cada nombre de archivo tarball tiene una combinación aleatoria (o eso me parece a mí) de letras y números después del guión final (-). Entonces, lo que me gustaría es alguna forma de descargar solo archivos con este tipo de nombre extname-REL1_25*.tar.gz
donde * es el lugar donde entraría el comodín en el nombre y extname
se refiere a la extensión que quiero.
Respuesta1
expansión de llaves wget
Utilice la expansión de llaves con wget para descargar varios archivos según un patrón.
Ejemplo:
wget -c https://extdist.wmflabs.org/dist/extensions/GoogleDocTag-REL1_{22-45203b7,23-249c6f2,24-3186a71,25-10e101f}.tar.gz
La bandera opcional -c
continúa la descarga si se pausa o se interrumpe desde el mismo punto donde se detuvo. La -c
opción es útil cuando descarga una gran cantidad de archivos y desea descargar todos los archivos en un lote sin interrupciones.
wget descarga varios archivos de una lista
Ejemplo:
lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt
wget -c -E -H -k -K -p -e robots=off -i ./list.txt
Opciones recursivas de aceptación/rechazo de wget
Opciones recursivas de aceptación/rechazo -A acclist --aceptar acclist -R lista de reservas --rechazar lista de reservas Especifique listas separadas por comas de sufijos o patrones de nombres de archivos para aceptar o rechazar. Tenga en cuenta que si alguno de los caracteres comodín, *, ?, [ o ], aparecen en un elemento de aclist o rejlist, será tratado como un patrón, en lugar de un sufijo. En este caso, usted Tienes que encerrar el patrón entre comillas para evitar que tu shell de expandirlo, como en-Un "*.mp3"o-A '*.mp3'.
Ejemplo:
lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt
wget -c -A "Vector*.tar.gz" -E -H -k -K -p -e robots=off -i ./list.txt
Ambas -A
opciones -R
descargan todos los archivos y luego las opciones de aceptar y rechazar eliminan los archivos descargados que no coinciden con el patrón. Esto es terriblemente ineficiente. Una forma más rápida de hacerlo sería hacer coincidir el patrón en el archivo list.txt para eliminar todos los archivos no deseados de list.txt antes de descargar cualquier cosa.
Supongamos que desea descargar todos los archivos dehttps://extdist.wmflabs.org/dist/extensions/que cumplan las siguientes condiciones:
- versión 1.25
- sólo las extensiones de MediaWiki seleccionadas
Suponiendo que ya ha creado un archivo list.txt que contiene todos los enlaces enhttps://extdist.wmflabs.org/dist/extensions/, abre list.txt en un editor de texto que admita la coincidencia de patrones y filtra el contenido de list.txt para que coincida con las líneas que tienen la cadena 1_25
(que se refiere a la versión 1.25) y luego filtra esos resultados para que coincidan con las líneas que tienen ~20 extensiones (las el número 20 no es importante) que deseas descargar. Luego escriba los resultados en un nuevo archivo llamado new-list.txt (el nombre del archivo new-list.txt no es importante) y descargue los múltiples archivos (~20 en total en este ejemplo) usando new-list.txt después de la -i
opción de wget. para leer URL de un archivo local o externo.
Una mejora adicional en este método sería reducir la cantidad de extensiones que deben coincidir filtrando el contenido de list.txt para que coincida con extensiones que contengan cadenas que coincidan con más de una extensión que está buscando. Por ejemplo, si la cadena wiki
coincide con varias extensiones que está buscando, puede filtrar el contenido de list.txt para que coincida wiki
y ahorrar un poco de tiempo. Enhttps://extdist.wmflabs.org/dist/extensions/Hay cinco enlaces que contienen ambos 1_25
y wiki
puede encontrar los cinco enlaces con dos coincidencias de patrones.
Respuesta2
No, es imposible con comodines. Pero en esta situación, wget funcionará con descarga recursiva.https://unix.stackexchange.com/questions/25340/download-recursively-with-wget