3 votos

¿Cómo organizar las fotos de la carpeta de la cámara en carpetas ordenadas por nombres de meses?

Por diversas razones, a menudo acabo sacando fotos de mis teléfonos conectando la conexión USB a un ordenador y extrayendo lo que necesito.

El problema al que me enfrento es que mi DCIM/100ANDRO carpeta es ahora enorme y el simple hecho de cargar la lista completa de archivos lleva un tiempo considerable. ¿Hay alguna manera (idealmente en Android 7.1.1 básico, pero las aplicaciones adicionales son aceptables) para ordenar estos en carpetas separadas, posiblemente por mes de tomar o similar. Si esto ocurre dinámicamente a medida que se toman las fotos, se puede hacer.

También me interesaría conocer alternativas a las opciones de USB -> browse device, pero querría algo que haga resolución completa, que no suba a una ubicación de internet primero y que no requiera bluetooth.

2voto

Jack Wade Puntos 231

Debe haber aplicaciones para facilitar lo que quieres lograr, pero uno de los métodos muy sencillo (para mí al menos) es utilizar un shell script como sugiere @alecxs en el comentario. Podemos leer la fecha de la foto tomada usando exiv2 herramienta de línea de comandos. Puede construir desde fuente o intente este . O bien, obtener la hora modificada de la foto utilizando stat pero el primero suele ser más preciso porque algunos programas como los exploradores de archivos cambian mal la fecha de modificación, por ejemplo, durante la operación de copia/movimiento.

Una vez conocido el mes de la foto, cree la carpeta correspondiente y mueva la foto allí:

#!/system/bin/sh
set -e

DIR='/sdcard/DCIM/100ANDRO'

find $DIR -maxdepth 1 -type f -iname '*.jp*g' -o -iname '*.png' |
while read -r photo
do
    month=$(exiv2 -q pr "$photo" | busybox awk -v c=1 -F '[: ]' '/timestamp.*[0-9]{4}:[0-9]{2}:[0-9]{2}/{print $5"_"$6; c=0} END{exit c}') ||
    month=$(busybox stat -c %y "$photo" | busybox awk -v c=1 -F '[- ]' '/[0-9]{4}-[0-9]{2}-[0-9]{2}/{print $1"_"$2; c=0} END{exit c}') ||
    { echo "Couldn't find month for $photo" >&2; continue; }

    mkdir -p "$DIR/$month"
    mv -n "$photo" "$DIR/$month/"
done

echo Done.

Android's awk y stat tienen errores o muestran un comportamiento no estándar. Es mejor utilizar busybox.

Llamemos al script sort.sh . Así es como funciona:

~$ find /sdcard/DCIM/100ANDRO/ -type f
/sdcard/DCIM/100ANDRO/00100sPORTRAIT_00100_BURST20190222182032908_COVER.jpg
/sdcard/DCIM/100ANDRO/IMG_20170312_013609.jpg
/sdcard/DCIM/100ANDRO/IMG_20180818_180827_HDR.jpg
/sdcard/DCIM/100ANDRO/IMG_20190222_164812.jpg
/sdcard/DCIM/100ANDRO/PANO_20190421_132245.jpg

~$ sort.sh
Done.

~$ find /sdcard/DCIM/100ANDRO/ -type f
/sdcard/DCIM/100ANDRO/2017_03/IMG_20170312_013609.jpg
/sdcard/DCIM/100ANDRO/2018_08/IMG_20180818_180827_HDR.jpg
/sdcard/DCIM/100ANDRO/2019_04/PANO_20190421_132245.jpg
/sdcard/DCIM/100ANDRO/2019_02/00100sPORTRAIT_00100_BURST20190222182032908_COVER.jpg
/sdcard/DCIM/100ANDRO/2019_02/IMG_20190222_164812.jpg

Además, puede utilizar file (en lugar de basarse en las extensiones de los archivos) para mover sólo las fotos y no los vídeos u otros archivos. Pero, de nuevo, Android /system/bin/file es muy limitada. O bien utilizar uno de Termux, o construir a partir de fuente o intente este .

Puedes ejecutar este script manualmente o de forma regular utilizando alguna aplicación de automatización. crond también es una opción si tienes Root.

También me interesaría conocer las alternativas a las opciones de USB -> browse device

Esta parte es en sí misma una pregunta aparte. Si quieres navegar por los archivos desde el PC puedes optar por adbfs SSHFS/SFTP, FTP, WebDAV, SMB, etc. O simplemente para transferir archivos adb pull será suficiente y es razonablemente más rápido. Si tienes Root y el volumen de datos a transferir es alto, considera usar el almacenamiento masivo USB (UMS) del custom recovery. Es un método muy rápido y fiable.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X