首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何制作脚本,用修改日期重命名图像和视频?

如何制作脚本,用修改日期重命名图像和视频?
EN

Unix & Linux用户
提问于 2022-09-25 02:38:20
回答 1查看 356关注 0票数 1

我有一个图片库文件夹,其中有图像和视频,以不想要的格式命名。我想要做一个脚本,扫描该目录中的每个文件,当它找到图像或视频时,将其重命名为这样的格式:"IMG_20190117_200445.jpg“--年份、月份、Day_Hour、分钟、Second.Extension --与视频相同,但添加视频扩展名。我怎么能这么做?提前谢谢。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-09-25 04:26:07

这是一个脚本,我认为它可以按你的要求来做。

我首先定义了一个函数,它接受一个扩展名和一个类型( "IMG“或"VID"),使用find获取带有该扩展名的所有常规文件,循环它们,使用stat来确定它们的修改时间,使用date来确定新的文件名,并重命名它们。

该脚本首先将该功能应用于各种图像扩展,然后应用于各种视频扩展。

代码语言:javascript
复制
#!/bin/bash

# a function to rename all files with a given extension
# takes two arguments: the extension, plus either "IMG" or "VID"
rename_ext() {
    # read the arguments to the function
    local ext="$1"
    local ftype="$2"
    # loop over all files with that extension
    while IFS= read -r -d '' filename ; do
        # read the (sub)directory name
        dirname="$(dirname "$filename")"
        # find the modification time
        modifytime="$(stat -c '%Y' "$filename")"
        # determine the new name
        local formatted="$(date +'%Y%m%d_%H%M%S' -d @$modifytime)"
        local newname="${ftype}_${formatted}.${ext}"
        # rename the file (and report that we are doing it)
        echo renaming "$filename" to "$dirname/$newname"
        mv -n "$filename" "$dirname/$newname"
    done < <(find -iname "*.$ext" -type f -print0)
}

# run the function on various image extensions
for ext in apng avif bmp gif jpeg jpg png tif webp ; do
    rename_ext "$ext" "IMG"
done

# run the function on various video extensions
for ext in avchd avif avi flv m2ts m4v mkv mov mp4 mpeg mpg mpv mts ogv qt vob webm wmv ; do
    rename_ext "$ext" "VID"
done

您可能想尝试一次,并将mv行注释掉,以确保它正在执行您的期望。

您还可以考虑使用exif元数据而不是文件修改时间,但这涉及到了一些问题。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/718587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档