Cambiar archivo (imágenes, videos) Timestamp del nombre de archivo -- file-system campo con file-transfer campo con file-management campo con media-files campo con bash camp android Relacionados El problema

Change file (pictures, videos) timestamp from filename


0
vote

problema

Español

Cuando se mueven archivos alrededor de TRU DIFERENTE Dirs y a través de PC / Smartphone, la marca de tiempo para la última fecha modificada, generalmente se restablece a la operación de DateTime Of Move / Copy. Esto lleva a que los archivos no se clasifiquen cronológicamente en algunas aplicaciones (Galería), bastante molesto, especialmente para imágenes y videos.

Por lo general, este tipo de archivos sigue la convención de nomenclatura de img_yyyymmdd_hhmmss.jpg para imágenes y vid_yyyymmdd_hhmmss.mp4 para videos. Así que pensé en combinar touch y extraer personaje de los nombres de archivos, la marca de tiempo está en efecto parte del nombre de archivo.

Encontré este script en HQ de Ephestione / a> for i in IMG*.jpg; do busybox touch -t ${i:4:8}${i:13:4}.${i:17:2} $i; done Pero solo funciona en terminal. Intenté hacer un guión de él, pero no funciona (ver más abajo)

  #!/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   

Idealmente, me gustaría poner un script como este en el directorio DCIM o imágenes de alto nivel y hacerlo procesar todas las imágenes y videos en los Subdirs. Por supuesto que estoy arraigado.

Original en ingles

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.

              

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Eliminar del script el .${i:17:2} en para bucle.

debería ser:

  #!/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   

Tenga en cuenta que las imágenes y videos de WhatsApp de acuerdo a su script tienen la misma hora 12:34.

Editar: Para pasar también a través de subdirectorios, cambie los bucles según lo siguió:

   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    

Explicación:

encontrar. -Tipo F -NAME " .mp5" `: Encuentre archivos (-TyPE T) cuyos nombres contengan" img _ .jpg "(-name" img _ *. jpg ") en el directorio actual (.) y subdirectorios.

J = ABCDEFGHIJKLMNABCDEFGHIJKLMN3 : Obtenga el nombre de archivo (no la ruta completa) y asignelo a j.

Touch -T $ {J: 4: 8} $ {J: 13: 4} $ i: Cambie el tiempo de modificación del archivo según la fecha y la hora recuperadas 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} .

 
 
       
       

Relacionados problema

1  Bash-shell en tableta de Android (Transformer Pad TF701T)  ( Bash shell on android tablet transformer pad tf701t ) 
¿Hay alguna forma de obtener una concha de bash totalmente trabajando en Android junto con un emulador de terminal, que admite un teclado de hardware (diseño ...

5  Bash: ¿cómo puedo verificar si existe una computadora en mi red sin IP (i.e. solo por el nombre del dispositivo)?  ( Bash how can i check if a computer exists on my network without ip i e by de ) 
Me gustaría que mi teléfono ejecute ciertos scripts de Shell a través de Tasker si mi teléfono está en la misma red WiFi que mi computadora portátil. Mi idea ...

0  Addon.d Bash Script para eliminar APKS después de un reflujo nocturno en Android 5.1 Cm12.1 No funciona  ( Addon d bash script for removing apks after nightly reflash on android 5 1 cm12 ) 
Estoy tratando de tener un script de bash en /system/addon.d/ que elimina a los aps no deseados de una instalación de Android 5.1 (CM12.1) nocturnos para mi t...

4  ¿Es posible iniciar una sesión FTP a través de Bash?  ( Is it possible to start an ftp session via bash ) 
¿Es posible iniciar una sesión con un teléfono inteligente Android Samsung Galaxy a través de una cáscara de bash para acceder a los archivos de forma remota?...

1  ¿Cómo modificar la solicitud de Shell Bash en CyanogenMod?  ( How to modify bash shell prompt in cyanogenmod ) 
¿Alguien ha tenido algún éxito modificando la solicitud de Shell en CyanogenMod? Actualmente, # es bastante inútil, sería mucho mejor mostrar al menos el dire...

1  Terminal Bash en tabletas  ( Bash terminal on tablets ) 
Me gustaría comprar una tableta y usarla como una netbook para que funcione utilizando un muelle de teclado (todavía me gustan las opciones de pantalla táctil...

24  ¿Es posible activar la configuración de Android "Anexo USB" desde la línea de comandos?  ( Is it possible to activate the usb tethering android setting from the command ) 
Me gustaría activar "Anexo USB" desde dentro de un script de bash, por lo que hay alguna posibilidad de ejecutar una línea de comandos con adb shell para ca...

11  ¿Cómo establecer bash como Shell predeterminado?  ( How to set bash as default shell ) 
Cuando estoy en un dispositivo con CyanogenMod, me presentan con una bonita cáscara de bash, un indicador de color y Bashrc. No veo un enlace simbólico de / s...

0  Cambiar archivo (imágenes, videos) Timestamp del nombre de archivo  ( Change file pictures videos timestamp from filename ) 
Cuando se mueven archivos alrededor de TRU DIFERENTE Dirs y a través de PC / Smartphone, la marca de tiempo para la última fecha modificada, generalmente se r...

8  Corriendo aplicaciones de un emulador de terminales [cerrado]  ( Running applications from a terminal emulator ) 
cerrado. Esta pregunta es off-topic . Actualmente no está aceptando respuestas. ¿Quieres ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos