Changer de fichier (images, vidéos) horodatage du nom de fichier -- file-system domaine et file-transfer domaine et file-management domaine et media-files domaine et bash domain android en relation problème

Change file (pictures, videos) timestamp from filename



0
vote

problème

français

Lorsque vous déplacez des fichiers autour de Tru différents DirS et sur PC / Smartphone, l'horodatage pour la dernière date modifiée est généralement réinitialisée à la même date de l'opération de déplacement / copie. Cela conduit à des fichiers non chronologiquement triés dans certaines applications (galerie), assez gênant, en particulier pour les images et les vidéos.

Généralement, ces types de fichiers suivent la convention de nommage de IMG_YYYYYMMDD_HHMMSS.JPG pour les images et vid_yyyyMMDD_HHMMS.mp4 pour les vidéos. J'ai donc pensé à combiner touch et à extraire le caractère des noms de fichiers, l'horodatage étant en vigueur dans une partie du nom de fichier lui-même.

J'ai trouvé ce script à HQ d'Epestione < / a> for i in IMG*.jpg; do busybox touch -t ${i:4:8}${i:13:4}.${i:17:2} $i; done Mais fonctionne uniquement dans le terminal. J'ai essayé de faire un script en dehors, mais cela ne fonctionne pas (voir ci-dessous)

#!/system/bin/sh #change timestamp for images filename IMG_YYYYMMDD_HHMMSS.jpg for i in IMG_*.jpg do touch -t ${i:4:8}${i:13:4}.${i:17:2} $i done #change timestamp for whatsapp images IMG-YYYYMMDD-WAnnnn.jpg for i in IMG-*WA*.jpg do touch -t ${i:4:8}1234 $i done #change timestamp for videos filename VID_YYYYMMDD_HHMMSS.mp4 for i in VID_*.jpg do touch -t ${i:4:8}${i:13:4}.${i:17:2} $i done #change timestamp for whatsapp videos IMG-YYYYMMDD-WAnnnn.mp4 for i in VID-*WA*.mp4 do touch -t ${i:4:8}1234 $i done

Idéalement, j'aimerais mettre un script comme celui-ci dans le répertoire DCIM ou images de haut niveau et devez-le traiter toutes les images et toutes les vidéos des sous-résidents. Bien sûr que je suis enraciné.

langue Anglaise

When moving files around tru different dirs and across PC / smartphone, timestamp for last modified date usually get reset to the very datetime of move / copy operation. This lead to files being non-chronologically sorted in some apps (Gallery), quite annoying especially for Images and Videos.

Usually these kind of files follows the naming convention of IMG_YYYYMMDD_HHMMSS.jpg for Images and VID_YYYYMMDD_HHMMSS.mp4 for Videos. So I thought about combining touch and extracting character from filenames, the timestamp being in effect part of the filename itself.

I found this script at Ephestione's HQ for i in IMG*.jpg; do busybox touch -t ${i:4:8}${i:13:4}.${i:17:2} $i; done but works in terminal only. I tried to make a script out of it but it doesn't work (see below)

#!/system/bin/sh #change timestamp for images filename IMG_YYYYMMDD_HHMMSS.jpg  for i in IMG_*.jpg do     touch -t ${i:4:8}${i:13:4}.${i:17:2} $i done  #change timestamp for whatsapp images IMG-YYYYMMDD-WAnnnn.jpg for i in IMG-*WA*.jpg do     touch -t ${i:4:8}1234 $i done  #change timestamp for videos filename VID_YYYYMMDD_HHMMSS.mp4 for i in VID_*.jpg do     touch -t ${i:4:8}${i:13:4}.${i:17:2} $i done  #change timestamp for whatsapp videos IMG-YYYYMMDD-WAnnnn.mp4 for i in VID-*WA*.mp4 do     touch -t ${i:4:8}1234 $i done 

Ideally I'd like to put a script like this in the top level DCIM or Pictures directory and have it process all the Images and Videos in the subdirs. Of course I'm rooted.

              

Liste de réponses

1
 
vote
vote
Meilleure réponse
 

Supprimer du script le .${i:17:2} dans la boucle.

Il devrait être:

#!/system/bin/sh #change timestamp for images filename IMG_YYYYMMDD_HHMMSS.jpg for i in IMG_*.jpg do touch -t ${i:4:8}${i:13:4} $i done #change timestamp for whatsapp images IMG-YYYYMMDD-WAnnnn.jpg for i in IMG-*WA*.jpg do touch -t ${i:4:8}1234 $i done #change timestamp for videos filename VID_YYYYMMDD_HHMMSS.mp4 for i in VID_*.jpg do touch -t ${i:4:8}${i:13:4} $i done #change timestamp for whatsapp videos IMG-YYYYMMDD-WAnnnn.mp4 for i in VID-*WA*.mp4 do touch -t ${i:4:8}1234 $i done

Notez que les images et les vidéos de WhatsApp selon votre script ont la même heure 12:34.

Edit: Pour également passer par des sous-répertoires, modifiez les boucles pour les boucles comme suit:

for i in `find . -type f -name "IMG_*..jpg"` do j=`basename $i` echo $j touch -t ${j:4:8}${j:13:4} $i done

explication:

trouver. -Type f -name " .mp5" `: Recherchez des fichiers (-TYPE T) dont les noms contiennent" IMG _ .jpg "(-Name" IMG _ *. JPG ") dans le répertoire actuel (.) et sous-répertoires.

j = basename $i : Obtenez le nom de fichier (pas le chemin entier) et attribuez-le à j.

toucher -t $ {j: 4: 8} $ {j: 13: 4} $ I: Modifiez la durée de modification du fichier en fonction de la date et de l'heure extrayées de $ {j: 4: 8} $ {J: 13: 4}.

 

Remove from the script the .${i:17:2} in for loop.

It should be:

#!/system/bin/sh #change timestamp for images filename IMG_YYYYMMDD_HHMMSS.jpg  for i in IMG_*.jpg do     touch -t ${i:4:8}${i:13:4} $i done  #change timestamp for whatsapp images IMG-YYYYMMDD-WAnnnn.jpg for i in IMG-*WA*.jpg do     touch -t ${i:4:8}1234 $i done  #change timestamp for videos filename VID_YYYYMMDD_HHMMSS.mp4 for i in VID_*.jpg do     touch -t ${i:4:8}${i:13:4} $i done  #change timestamp for whatsapp videos IMG-YYYYMMDD-WAnnnn.mp4 for i in VID-*WA*.mp4 do     touch -t ${i:4:8}1234 $i done 

Note that the images and videos from WhatsApp according to your script have the same time 12:34.

Edit: To also go through subdirectories, change the for loops as followed:

 for i in `find . -type f -name "IMG_*..jpg"` do  j=`basename $i`   echo $j  touch -t ${j:4:8}${j:13:4} $i   done  

Explanation:

find . -type f -name ".mp5"`: find files ( -type t) whose names contains " IMG_.jpg" ( -name "IMG_*.jpg") in the current directory ( . ) and subdirectories.

j= basename $i : Get the filename (not the entire path), and assign it to j.

touch -t ${j:4:8}${j:13:4} $i : Change the file's modification time based on the date and time retrieved from ${j:4:8}${j:13:4} .

 
 
       
       

Questions connexes

1  Comment modifier l'invite de Shell Bash en cyanogenmod?  ( How to modify bash shell prompt in cyanogenmod ) 
Quelqu'un a-t-il eu un succès en modifiant l'invite de Shell en Cyanogenmod? Actuellement, # est assez inutile, il serait beaucoup plus agréable d'afficher au...

0  Addon.d Bash Script pour supprimer des APKS après la nuit de reflash sur Android 5.1 cm12.1 ne fonctionne pas  ( Addon d bash script for removing apks after nightly reflash on android 5 1 cm12 ) 
J'essaie d'avoir un script Bash dans /system/addon.d/ qui supprime les puits indésirables d'une installation d'une installation nocturne Android 5.1 (CM12.1) ...

1  Bash-shell sur tablette Android (Pad de transformateur TF701T)  ( Bash shell on android tablet transformer pad tf701t ) 
Y a-t-il un moyen d'obtenir une coque Bash entièrement fonctionnelle sur Android avec un émulateur de terminal, qui prend en charge un clavier matériel (mise ...

4  Est-il possible de démarrer une session FTP via Bash?  ( Is it possible to start an ftp session via bash ) 
est-il possible de démarrer une session avec un smartphone Android Samsung Galaxy via une coquille Bash pour accéder à des fichiers à distance? ...

1  Terminal Bash sur les comprimés  ( Bash terminal on tablets ) 
J'aimerais acheter une tablette et l'utiliser comme un netbook pour travailler à l'aide d'un quai de clavier (j'aime toujours les options tactiles et stylet s...

0  Changer de fichier (images, vidéos) horodatage du nom de fichier  ( Change file pictures videos timestamp from filename ) 
Lorsque vous déplacez des fichiers autour de Tru différents DirS et sur PC / Smartphone, l'horodatage pour la dernière date modifiée est généralement réinitia...

8  Exécution d'applications à partir d'un émulateur de terminal [fermé]  ( Running applications from a terminal emulator ) 
fermé. Cette question est off-sujet . Il n'accepte pas actuellement les réponses. Voulez...

5  Bash - Comment puis-je vérifier si un ordinateur existe sur mon réseau sans IP (c'est-à-dire par nom de périphérique uniquement)?  ( Bash how can i check if a computer exists on my network without ip i e by de ) 
J'aimerais que mon téléphone exécute certains scripts shell via un groupe de travail si mon téléphone est sur le même réseau WiFi que mon ordinateur portable....

11  Comment définir Bash comme coquille par défaut?  ( How to set bash as default shell ) 
Lorsque je adbis dans un appareil avec CyanogenMod, je suis présenté avec une jolie coquille Bash, une invite de couleur et Bashrc. Je ne vois pas un symbole ...

24  Est-il possible d'activer le paramètre Android "USB Tethering" de la ligne de commande?  ( Is it possible to activate the usb tethering android setting from the command ) 
J'aimerais activer "Téléparation USB" à partir d'un script Bash, il y a donc une possibilité d'exécuter une ligne de commande avec adb shell pour modifier c...




© 2022 www.demandez.top All Rights Reserved. Questions et réponses Accueil Tous les droits sont réservés