Add All existing
This commit is contained in:
64
append
Executable file
64
append
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Usage info
|
||||
if [[ $# -lt 2 ]]; then
|
||||
echo "Usage: $0 {front|back|ext|extension} <string> [folder]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mode=$1
|
||||
string=$2
|
||||
folder=${3:-$(pwd)}
|
||||
|
||||
# Ensure the folder exists
|
||||
if [[ ! -d "$folder" ]]; then
|
||||
echo "Error: '$folder' is not a valid directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Process files
|
||||
for file in "$folder"/*; do
|
||||
[[ -f "$file" ]] || continue # skip non-files
|
||||
base="$(basename "$file")"
|
||||
|
||||
# Split filename into name and extension (if any)
|
||||
name="${base%.*}"
|
||||
ext="${base##*.}"
|
||||
|
||||
case "$mode" in
|
||||
front)
|
||||
# Add string to the front of the filename
|
||||
newname="${string}${base}"
|
||||
;;
|
||||
back)
|
||||
# Add string before the extension (if present)
|
||||
if [[ "$base" == "$ext" ]]; then
|
||||
# no extension
|
||||
newname="${name}${string}"
|
||||
else
|
||||
newname="${name}${string}.${ext}"
|
||||
fi
|
||||
;;
|
||||
ext|extension)
|
||||
# Add string *to* the extension (after a dot)
|
||||
if [[ "$base" == "$ext" ]]; then
|
||||
# file has no extension
|
||||
newname="${base}.${string}"
|
||||
else
|
||||
newname="${name}.${ext}${string}"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Invalid mode: '$mode'. Use 'front', 'back', or 'ext/extension'."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Avoid renaming collisions
|
||||
if [[ "$newname" != "$base" ]]; then
|
||||
echo "Renaming: $base -> $newname"
|
||||
mv -n "$file" "$folder/$newname"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "✅ All applicable files in '$folder' have been renamed."
|
||||
Reference in New Issue
Block a user