es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bucle For de Bash: Convertir URL a archivo .jpg y mantener el ID de la URL en el nombre del archivo de imagen.

Soy nuevo en bash. He escrito el siguiente bucle for para convertir un array de URL en archivos de imagen utilizando basename:

for i in ${img_jpg[@]//\"/} ; do convert "$i" -set filename:base "%[basename]" "%[filename:base].png" ; done

Funciona bien para URLs con el formato siguiente:

https://xxx.domain.com/xy22233

Ahora me gustaría crear un bucle similar que utilice basename sin la extensión de archivo para URLs como esta:

https://img.domain.com/vi/y2x112233/default.jpg

Me gustaría obtener un archivo con esta parte de la URL:

y2x112233

O incluso la URL completa.

Este es mi intento, pero no ha funcionado:

for i in ${img_jpg[@]//\"/} ; do convert "$i" "${filename%.*}" ; done
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para extraer solo la parte de la URL después de la última barra (“/”) y antes de la extensión del archivo (“.jpg”), puedes utilizar el comando “basename” con las opciones “-s” y “-a”:

    for i in ${img_jpg[@]//\//} ; do
        basename -s .jpg -a "$i"
    done
    

    Esto dará como resultado:

    y2x112233
    

    Para mostrar la URL completa, puedes modificar el bucle de la siguiente manera:

    for i in ${img_jpg[@]} ; do
        filename=$(basename -s .jpg -a "$i")
        echo "${i/$filename/$filename.png}"
    done
    

    Esto reemplazará el nombre de archivo extraído por el mismo nombre pero con una extensión “.png”, y luego imprimirá la URL completa con el nombre de archivo modificado.

Comments are closed.