Il doit y avoir des applications pour faciliter ce que vous souhaitez accomplir, mais l'une des méthodes les plus simples (du moins pour moi) est d'utiliser un script shell comme suggéré par @alecxs dans le commentaire. Nous pouvons lire la date de la prise de la photo en utilisant l'outil en ligne de commande exiv2
. Vous pouvez le compiler à partir de la source ou essayer celui-ci. Ou obtenir l'heure de modification de la photo en utilisant la commande stat
, mais la première est généralement plus précise car certains programmes comme les explorateurs de fichiers modifient mal la date de modification par exemple lors des opérations de copie/déplacement.
Une fois le mois de la photo connu, créez le dossier correspondant et déplacez la photo là-bas :
#!/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 "Impossible de trouver le mois pour $photo" >&2; continue; }
mkdir -p "$DIR/$month"
mv -n "$photo" "$DIR/$month/"
done
echo Terminé.
Les commandes awk
et stat
d'Android sont boguées ou montrent un comportement non standard. Mieux vaut utiliser busybox.
Appelons ce script sort.sh
. Voici comment ça fonctionne :
~$ 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
Terminé.
~$ 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
Vous pouvez également utiliser la commande file
(au lieu de vous fier aux extensions de fichier) pour ne déplacer que les photos et pas les vidéos ou autres fichiers. Mais encore une fois, la commande /system/bin/file
d'Android est très limitée. Utilisez-en une de Termux, compilez-la à partir de la source, ou essayez celle-ci.
Vous pouvez exécuter ce script manuellement ou de manière régulière en utilisant une application d'automatisation. crond
est également une option si vous avez un accès root.
Je serais également intéressé par des alternatives aux options de connexion USB -> parcourir l'appareil
Cette partie est en elle-même une question distincte. Si vous souhaitez parcourir les fichiers depuis un PC, vous pouvez opter pour adbfs
, SSHFS/SFTP, FTP, WebDAV, SMB, etc. Ou pour simplement transférer des fichiers, adb pull
suffira et est raisonnablement plus rapide. Si vous avez le root et que le volume de données à transférer est élevé, envisagez d'utiliser le Stockage de masse USB (UMS) depuis une récupération personnalisée. C'est une méthode très rapide et fiable.
0 votes
La galerie de photos de stock d'Android 7 a quelques vues de base par défaut, vous pouvez regrouper par heure ou par lieu. Est-ce suffisant pour vos besoins ou devez-vous obligatoirement classer dans des dossiers?
0 votes
@le dossier d'@alecxs je crains - le problème n'est pas la navigation sur l'appareil lui-même, c'est lorsque je parcours la carte SD d'un appareil connecté. S'il y a un moyen rapide d'envoyer des photos en pleine résolution vers un PC à proximité, idéalement via l'USB car la situation du réseau est compliquée, cela fonctionnerait aussi.
0 votes
Vous voulez dire que lorsque vous êtes connecté via USB MTP, il met trop de temps à s'afficher, de sorte que vous ne pourrez jamais commencer à copier le dossier DCIM, car vous ne pouvez pas le voir/sélectionner pour le copier?
0 votes
Vous pourriez exécuter un script shell à chaque événement déclencheur (par exemple au démarrage de la galerie) qui crée des sous-dossiers et déplace les fichiers avec MacroDroid
0 votes
Pour un transfert simple, vous pouvez activer le débogage USB dans les paramètres du développeur et exécuter depuis cmd.exe lorsque connecté via un câble USB (ou adb via wifi)
adb.exe pull -a -p /sdcard/DCIM/Camera