Encuentre imágenes de un tamaño específico y muévalas a la basura desde la terminal

1

Estoy ordenando las imágenes en una biblioteca de imágenes un poco grande, y las miniaturas de las antiguas bibliotecas iPhoto todavía están ahí. Y necesito eliminarlos para mejorar la velocidad de clasificación de las imágenes.

He encontrado esta responde aquí para Linux, pero ¿qué hay de macOS? ¿Hay alguna forma de buscar una carpeta, recursivamente, y determinar si la imagen *.jpg, *.png, *.bmp, *.jpeg tiene el W360 y el H270?

Running Sierra 10.12.4

    
pregunta Adam 18.04.2017 - 13:17

1 respuesta

1

Aquí hay un ejemplo bash script que puede lograr el objetivo de forma nativa, sin necesidad de instalar nada.

#!/bin/bash

targetDir="$HOME/Pictures"

find "$targetDir" -iname '*.jpg' -o -iname '*.png' -o -iname '*.bmp' -o -iname '*.jpeg' 2>/dev/null | \
while read -r filename; do
    hw="$(sips -g pixelHeight -g pixelWidth "$filename" 2>/dev/null)"
    h="$(awk '/pixelHeight/{print $2}'<<<"$hw")"
    w="$(awk '/pixelWidth/{print $2}'<<<"$hw")"
    if [[ $h -eq 270 ]] && [[ $w -eq 360 ]]; then
        echo rm "$filename"
    fi
done

Todo lo que necesitas hacer es establecer la variable targetDir en el punto de inicio donde quieres que se vea el comando find . El valor predeterminado es la carpeta de imágenes dentro de su carpeta de inicio.

Nota: En el ejemplo script , el comando echo debe eliminarse delante de
rm "$filename" in ordene que se eliminen realmente los archivos y está ahí para que pueda probar primero el resultado del script en cuanto a qué archivos se eliminarán. Por supuesto, puede elegir eliminarlo sin probar y simplemente ir a por ello, si está seguro de que desea eliminar cualquier archivo .jpg, .png, .bmp o .jpeg con dimensiones de 270 píxeles de alto por 360 píxeles de ancho dentro de el targetDir .

También tenga en cuenta que, dependiendo del número total de archivos de las extensiones de archivo de destino, la ejecución de este script puede tardar un tiempo en completarse. En mi sistema, encontró ~ 1000 archivos para eliminar de 27500 archivos en mi carpeta de Imágenes y tardó al menos 5 a 10 minutos en completarse.

Dicho esto, ejecuté esta secuencia de comandos, como está escrito, y los únicos archivos que no sean el archivo de prueba que creé con las dimensiones de destino, todos los demás archivos se encontraron en una ubicación específica dentro de mi paquete de iPhoto Library en la carpeta de Miniaturas. Entonces, ¿no sería más fácil entrar en el paquete y eliminar los contenidos en el Finder? Es decir, si realmente son solo esas miniaturas de las que quieres deshacerte.

Si no sabe cómo usar el script , haga lo siguiente en la Terminal:

touch delete270x360images
open delete270x360images

Copie y pegue el código del script desde arriba en el documento delete270x360images abierto, modifíquelo según sea necesario / deseado y luego guarde y cierre.

En la Terminal, hazlo ejecutable:

chmod u+x delete270x360images

Ahora, para usarlo en la Terminal, escriba lo siguiente y luego presione intro.

./delete270x360images

Espera a que se complete.

    
respondido por el user3439894 18.04.2017 - 18:07

Lea otras preguntas en las etiquetas