How can I use BASH to parse metadata from jpg and mp4 files?
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 and exiftool?
#!/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
Probably I'm misreading it, but isn't this kind of answer basically saying "google it"?
I don't want to sound rude, but my english is kind of failing me, I'm just curious, but what's the point?
One of the reasons of this kind of public forum is to share knowledge and experiences. ChatGPT is a closed, private, garden where the answer will just die.
I could get a "I don't really know the answer but I used ChatGPT and it gave me this:" followed by a script, or something like that.
I know, this is off-topic and I'm sorry, I'm just really interested in Why, considering it's said multiple times in this comment section.
chatgpt is built on the foundations of stackoverflow etc. therefore yeah it is kind of googling it.
however the nature of the generative approach of chatgpt gives you tailored answers.
when you google your question you get abstract answers for other related questions. with an explanation of how doing it. e.g. when I dont understand something but want to I will google it - to gain knowledge.
but with chatpgt you can specify - hey I want a functiom that does this and that in prints me a string/double using that format. chatpgt gives me exactly what I want - without fiddling with format strings etc.
anithet example is regex. for my field of experience I am no core developer, therefore for me everything is a tool to get what I want. chatpgt can give this me in a more comfortable way. I dont need to master regex. but it is very helpful. therefore Im outsourcing that kind of work.
One of the reasons of this kind of public forum is to share knowledge and experiences. ChatGPT is a closed, private, garden where the answer will just die.
I agree that for a general standpoint this is valid. however for such simple questions we do not need new forums asking about the already discussed stuff. this is just repetition and we do not like duplicates (which is why forum rules are strict about this)
so I dont see any issue here.
could get a "I don't really know the answer but I used ChatGPT and it gave me this:" followed by a script, or something like that.
that is the total responsibility by the user and has nothing to do with chatgpt.
its the same as running ambiguous linux commands as sudo. its not the fault of stackoverflow, the reddit thread or linus itself.
its the users fault.
therefore if such thing you mentioned happens. but it can be rejected - one should now about the culprits and strenghts of chatgpt.
edit:
as you can see the top voted comment is a human made answer (could also be a chatpgt bot?).
Hi @ChatGPT@lemmings.world , write a bash script that extracts date of modification including seconds from all .jpg and .mp4 files in the current directory and prints it out
Sure, here is a simple Bash script which uses the stat command to get the modification time of files. It looks specifically for .jpg and .mp4 files in the current directory and prints out the modification date and time, including seconds:
#!/bin/bash
# Iterate over .jpg and .mp4 files in the current directory
for file in *.{jpg,mp4}; do
# Check if the file exists before trying to extract the date
if [ -e "$file" ]; then
# Use stat to extract modification date and print it out
echo "$file - Modification Date: $(stat -c %y "$file")"
fi
done
This script will print out the filename along with its modification date for each .jpg and .mp4 file.
You can use this script by saving it in a file (for example, filedate.sh), making it executable with chmod +x filedate.sh, and running it with ./filedate.sh.
Please note that the date format of the stat command can vary based on your system. The %y format outputs the last modification time in human readable format (yyyy-mm-dd hh:mm:ss.sssssssss +zone). You might need to adjust this if you are using a system where stat behaves differently.
Also keep in mind that this script does not traverse directories recursively. It only looks for the specified files in the directory where it is executed. If you need to perform this operation on files in subdirectories, you will need to modify the script slightly or use a different approach.
You could use stat to get this information based on the file itself. And with jhead for example you can get the additional meta data in the files, stored in the EXIF and IPTC tags.
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.