Title basically, I need to parse the date modified, the time and seconds in order to reconstruct the filenames in the format of an android phone’s camera roll.
I should be able to make the script once I know how to parse the metadata is all
maybe something like this using
mediainfo
andexiftool
?#!/bin/bash for file in *.jpg *.mp4; do # Extract date and time from file's metadata if [[ $file == *.jpg ]]; then datetime=$(exiftool -DateTimeOriginal -d "%Y%m%d_%H%M%S" "$file" | awk -F': ' '{print $2}') else datetime=$(mediainfo --Output="General;%File_Modified_Date%" "$file" | awk -F' ' '{print $1"_"$2}' | tr -d ':' | tr -d '-') fi # If datetime was found, rename the file if [ -n "$datetime" ]; then # Extract extension of file ext="${file##*.}" # Rename file with date and time as prefix (remove echo after testing it) echo mv -- "$file" "${datetime}.${ext}" fi done
Use ffprobe to get video info, it makes it dead easy. Practically a one liner.
You could use
stat
to get this information based on the file itself. And withjhead
for example you can get the additional meta data in the files, stored in the EXIF and IPTC tags.Both can be used in scripts.
Date modified can be obtained by ls assuming you haven’t touched the files. Ffprobe is your friend for video length.
I’ve been using ChatGPT to help come up with bash scripts like this. Make sure you test the script out on a folder of dummy files first if you’re not sure.