从文件名更改文件(图片,视频)时间戳 -- file-system 领域 和 file-transfer 领域 和 file-management 领域 和 media-files 领域 和 bash 领域 android 相关 的问题

Change file (pictures, videos) timestamp from filename


简体版||繁體版
0
vote

问题

中文

当周围移动不同的文件和跨pc /智能手机时,最后修改日期的时间戳通常会重置为移动/复制操作的非常日期。这导致文件在某些​​应用程序(画廊)中是非按时间顺序排序的,特别是尤其适用于图像和视频。

通常,这些文件遵循img_yyyyyymmmd_hhmmss.jpg的命名约定,用于图像和vid_yyyyymmdd_hhmmss.mp4 for video。 所以我考虑了组合 touch 并从文件名中提取字符,时间戳是文件名本身的一部分。

我在 ephestione的hq < / a> for i in IMG*.jpg; do busybox touch -t ${i:4:8}${i:13:4}.${i:17:2} $i; done 但仅在终端工作。我试图将脚本出来,但它不起作用(见下文)

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

理想情况下,我想在顶级DCIM或图片目录中将这样的脚本放在顶级DCIM或图片目录中,并在子模d中处理所有图像和视频。当然我扎根了。

英文原文

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.

              

回答列表

1
 
vote
vote
最佳答案
 

从脚本中删除 .${i:17:2} for循环。

应该是:

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

请注意,根据脚本的WhatsApp从WhatsApp的图像和视频同时12:34。

编辑:还要通过子目录,更改循环,如下所示:

   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    

说明:

找到。 -type f-name" .mp5" `:查找当前目录中包含"IMG _ .jpg" 的文件(-ttype t)(-mg _ .jpg")和子目录。

j = basename $i :获取文件名(不是整个路径),并将其分配给j。

touch -t $ {j:4:8} $ {J:13:4} $ i:根据$ {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} .

 
 
       
       

相关问题

8  从终端仿真器运行应用程序[已关闭]  ( Running applications from a terminal emulator ) 
关闭。这个问题是 off-topic 。它目前不接受答案。 想要改进这个问题?更新这个问题,所以它是关于android爱好者堆栈交换的主题。 关闭 ...

5  Bash - 如何检查计算机是否存在于没有IP的网络上的计算机(即仅通过设备名称)?  ( Bash how can i check if a computer exists on my network without ip i e by de ) 
如果我的手机与我的笔记本电脑相同的WiFi网络,我希望通过Tasker执行某些Shell脚本。我的初始想法是编辑 /etc/hosts 文件,但这将无法起作用,因为设备只在一个wifi网络上仅受到一个wifi网络。 更昂贵的想法是只需从手机中对网络上的每一个可能的地址都是ping,然后尝试通过ssh发送命令(例如, ...

4  是否可以通过Bash启动FTP会话?  ( Is it possible to start an ftp session via bash ) 
是否可以通过BASH Shell与Android Samsung Galaxy Smartphone开始会话以远程访问文件? ...

24  是否可以从命令行激活“USB系列”Android设置?  ( Is it possible to activate the usb tethering android setting from the command ) 
我想在Bash脚本中激活"USB系列" ,因此有可能使用 adb shell 来运行命令行以更改一些Android设置? edit1 : 以下命令打开所需的设置,但不单独更改任何内容: am start -n com.android.settings/.TetherSettings 我发现的 tethe...

0  从文件名更改文件(图片,视频)时间戳  ( Change file pictures videos timestamp from filename ) 
当周围移动不同的文件和跨pc /智能手机时,最后修改日期的时间戳通常会重置为移动/复制操作的非常日期。这导致文件在某些​​应用程序(画廊)中是非按时间顺序排序的,特别是尤其适用于图像和视频。 通常,这些文件遵循img_yyyyyymmmd_hhmmss.jpg的命名约定,用于图像和vid_yyyyymmdd_hhmm...

1  如何在Cyanogenmod中修改Bash Shell提示符?  ( How to modify bash shell prompt in cyanogenmod ) 
有没有任何成功修改壳体在cyanogenmod?目前,#是非常无用的,至少显示工作目录会很好。此外,是否可以完成Tab-Taskion? ...

0  AddOn.d Bash脚本用于在夜间刷新Android 5.1 cm12.1之后删除apks .1不起作用  ( Addon d bash script for removing apks after nightly reflash on android 5 1 cm12 ) 
我正在尝试在/system/addon.d/中使用bash脚本,从夜间Android 5.1(cm12.1)安装中,删除不需要的apks。每一个新的夜间reshash都会重新安装某些系统应用程序,以便为什么我想要脚本来反转此操作,因此我不必手动进行。 有一些备份脚本运行罚款(su,gapps),但我自己的脚本不起作用...

1  平板电脑的Bash终端  ( Bash terminal on tablets ) 
我想购买一款平板电脑并使用它作为上网本,使用键盘码头工作(我仍然喜欢购买上网本的触摸屏和触摸箱选项)。我主要在Linux机器上工作,我需要SSH,VPN和远程打开X Windows的能力。是否有能够做到这一点的Android平板电脑的终端?任何关于ubuntu在平板电脑上的人? ...

11  如何将bash设置为默认shell?  ( How to set bash as default shell ) 
当我adb与cyanogenmod中的设备时,我用漂亮的bash shell,颜色提示和bashrc呈现。我没有从/ system / xbin / bash到/ system / bin / sh的符号链接。它们如何将默认shell设置为bash而不是sh?我看过rc文件,但没有找到任何东西。我想在我的Androi...

1  在Android平板电脑上的Bash-shell(变压器垫TF701T)  ( Bash shell on android tablet transformer pad tf701t ) 
是否有任何方法可以将Android与终端仿真器一起获得完全工作的Bash Shell,该终端仿真器支持硬件键盘(德国布局)? 我至少需要的功能(终端应用程序,不是图形!): Bash使用正常的.bashrc和脚本(函数定义,别名...) ssh-client with hostname查找和执行一些scp su...




© 2022 it.wenda123.org All Rights Reserved. 问答之家 版权所有