Mi objetivo es hacer un guión para mogrify. El comando mogrify cambiará el tamaño de las imágenes en un directorio y colocará las imágenes redimensionadas en un directorio en el mismo nivel de directorio, con el mismo nombre que el directorio de trabajo, pero con un sufijo (_a).
El nuevo directorio se trasladará a otra colección más adelante. Algo como esto,
#!/bin/bash
mkdir ../n_a
for file in *{.JPG|.jpg}; do mogrify -path ../n_a -resize 1200x1200 -quality 96;done
Supongo que ../ denota el directorio principal cuando trabajo en un directorio secundario, pero necesito ayuda aquí.
Editar: "n" debe reemplazarse con la sintaxis del nombre del directorio de trabajo. Lo siento, también hubo un error tipográfico en la tercera línea del script, debería haber leído n, no x
Edit2: este script hace exactamente lo que necesito y es silencioso.
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p $DEST
mogrify -path $DEST -resize 1200x1200 -quality 96 *.jpg *.JPG
gracias a vgoff por la sintaxis correcta de PWD y cesarerivahttp://www.cesareriva.com/archives/722por mostrarme la función DEST.
Algo más:
${PWD##*/}_a
no se preocupa por los espacios en el nombre del directorio y el script falla. Se crea un directorio vacío en el mismo directorio que las imágenes.
Lo descubrí ahora, también necesita cotizaciones en $DEST, presumiblemente para ayudar a mkdir a crear el directorio con un espacio en el nombre y mogrify para escribir los archivos en el lugar correcto, como este
#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p "$DEST"
mogrify -path "$DEST" -resize 1200x1200 -quality 96 *.jpg *.JPG
Edit3: Ni siquiera necesito un script para esto, es decir
mkdir ../${PWD##*/}_a && mogrify -path ../${PWD##*/}_a -resize '1200x1200>' -quality 95 *{.jpg|.JPG}
Respuesta1
Supongo que ../ denota el directorio principal cuando trabajo en un directorio secundario, pero necesito ayuda aquí.
Has acertado.
"n" debe reemplazarse con la sintaxis del nombre del directorio de trabajo.
Ajá. En ese caso, el pwd
comando será tu amigo. Complete una variable con ella o use la $PWD
variable
Respuesta2
Sí. Es el directorio principal.
Una nota es que esto no es específico de bash. Ni siquiera es cáscara. Es parte de la forma en que funcionan los sistemas de archivos.
El sistema de archivos tiene una entrada en cada directorio ..
y ese es el directorio principal. Cada uno también tiene una entrada para .
representar el directorio actual.