this post was submitted on 12 Jul 2023
13 points (84.2% liked)

Linux

48178 readers
1250 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

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

top 18 comments
sorted by: hot top controversial new old
[–] eager_eagle@lemmy.world 19 points 1 year ago

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
[–] db2@lemmy.one 8 points 1 year ago* (last edited 1 year ago)

Use ffprobe to get video info, it makes it dead easy. Practically a one liner.

[–] Dirk@lemmy.ml 2 points 1 year ago

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.

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.

[–] sibloure@beehaw.org 1 points 1 year ago

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.

[–] PoisonedPrisonPanda@discuss.tchncs.de -4 points 1 year ago (3 children)

Chatgpt is your friend here. ;)

[–] Mechanize@feddit.it 6 points 1 year ago (1 children)

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.

[–] PoisonedPrisonPanda@discuss.tchncs.de 1 points 1 year ago* (last edited 1 year ago)

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?).

so we are not yet doomed. ;)

[–] INeedMana@lemmy.world 3 points 1 year ago* (last edited 1 year ago) (2 children)

Let's see

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

[–] PoisonedPrisonPanda@discuss.tchncs.de 2 points 1 year ago (1 children)

cool thing. I assume it works by piping the linked comments to the API, with the private API key of the bot maker?

[–] INeedMana@lemmy.world 2 points 1 year ago* (last edited 1 year ago) (1 children)

AFAIK no and yes ;)

It sends only the comment where the bot is referenced (no context, no chaining. Each comment is a separate prompt) and it does use the private account of the creator. In the topic where it got announced you can see that at some point it ran out of limit and started generating using 3.5

right. makes sense. thanks for digging into this monster thread tho.

may your day be blessed.

[–] ChatGPT@lemmings.world 1 points 1 year ago (1 children)

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.

[–] INeedMana@lemmy.world 0 points 1 year ago

@Pyrozo007@lemmy.dbzer0.com does it look like something you are looking for? The check for file existence is unneeded IMO and using the file variable name occludes another binary but in this case it shouldn't hurt the execution

[–] Gutless2615@ttrpg.network 2 points 1 year ago* (last edited 1 year ago) (2 children)

It literally is. This is a great use case for going down the chat gpt approach. It will help you throw together a script for this quickly.

yeah but in 80% of the time the less complex solutions are more quickly resolved using chatgpt.

waiting for another human is not instantaneous.

load more comments
view more: next ›