Auto-update: Sat Mar 15 23:31:59 PDT 2025

This commit is contained in:
sanj 2025-03-15 23:31:59 -07:00
parent 4e9fcc3a56
commit e26d6f8a8c

80
mime Executable file
View file

@ -0,0 +1,80 @@
#!/bin/bash
# This script processes all files in the current folder:
# 1. Removes leading '-' characters from filenames.
# 2. Uses the file command to determine the MIME type.
# 3. Renames the file to add the correct file extension.
# Function to map MIME type to a file extension
get_extension() {
local mimetype="$1"
case "$mimetype" in
image/jpeg)
echo "jpg"
;;
image/png)
echo "png"
;;
image/gif)
echo "gif"
;;
video/mp4)
echo "mp4"
;;
video/x-matroska)
echo "mkv"
;;
application/pdf)
echo "pdf"
;;
text/plain)
echo "txt"
;;
*)
echo ""
;;
esac
}
# Iterate over files in current directory
for file in *; do
# Skip if not a regular file
if [ ! -f "$file" ]; then
continue
fi
# Remove any leading dashes from the filename
newname=$(echo "$file" | sed 's/^-*//')
if [ "$newname" != "$file" ]; then
if [ -e "$newname" ]; then
echo "File $newname already exists. Skipping rename of $file."
file="$newname" # continue processing the original file
else
mv -- "$file" "$newname"
echo "Renamed $file to $newname"
file="$newname"
fi
fi
# Determine the MIME type; use '--' to avoid interpreting filenames as options
mimetype=$(file --mime-type -b -- "$file")
ext=$(get_extension "$mimetype")
if [ -z "$ext" ]; then
echo "Unknown MIME type for $file: $mimetype. Skipping extension addition."
continue
fi
# If the file doesn't already end with the correct extension, rename it
if [[ "$file" != *.$ext ]]; then
newfile="${file}.${ext}"
# If newfile already exists, avoid overwriting
if [ -e "$newfile" ]; then
echo "Target file $newfile already exists. Skipping renaming of $file."
continue
fi
mv -- "$file" "$newfile"
echo "Renamed $file to $newfile (MIME type: $mimetype)"
else
echo "$file already has the correct extension ($ext)"
fi
done