Ajouter miscellaneous/clean_file_names.sh
This commit is contained in:
40
miscellaneous/clean_file_names.sh
Normal file
40
miscellaneous/clean_file_names.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
|
||||
# this script cleans up the names of files and directories in the current directory.
|
||||
# it ensures that names only contain letters, numbers, or the characters "-", "_", and ".".
|
||||
# spaces and accented characters are replaced with allowed characters.
|
||||
|
||||
# usage:
|
||||
# 1. save this script to a file, e.g., rename_files.sh
|
||||
# 2. make the script executable: chmod +x rename_files.sh
|
||||
# 3. run the script in the directory you want to clean up: ./rename_files.sh
|
||||
|
||||
# function to "clean" the names of files and directories
|
||||
# the function converts uppercase to lowercase, replaces accented characters with their base equivalents,
|
||||
# and replaces any character that is not a letter, digit, dot, underscore, or hyphen with an underscore.
|
||||
clean_name() {
|
||||
echo "$1" | tr '[:upper:]' '[:lower:]' | sed -e 's/[àáâãäå]/a/g' \
|
||||
-e 's/[èéêë]/e/g' \
|
||||
-e 's/[ìíîï]/i/g' \
|
||||
-e 's/[òóôõö]/o/g' \
|
||||
-e 's/[ùúûü]/u/g' \
|
||||
-e 's/[ç]/c/g' \
|
||||
-e 's/[^a-zA-Z0-9._-]/_/g'
|
||||
}
|
||||
|
||||
# loop through all files and directories in the current directory
|
||||
for item in *; do
|
||||
# check if the item exists (avoid errors if nothing is found)
|
||||
if [ -e "$item" ]; then
|
||||
# get the new "cleaned" name
|
||||
new_name=$(clean_name "$item")
|
||||
# if the new name is different from the old one, rename the item
|
||||
if [ "$item" != "$new_name" ]; then
|
||||
mv "$item" "$new_name"
|
||||
echo "renamed: '$item' -> '$new_name'"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# display a message indicating that all files and directories have been processed
|
||||
echo "all files and directories have been processed."
|
||||
Reference in New Issue
Block a user