Created
January 15, 2016 10:08
-
-
Save universome/3871b285288d12f85fb1 to your computer and use it in GitHub Desktop.
Renames everything (filenames and file contents) recursively inside a folder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
forbidden_extensions=( "jpg" "jpeg" "png" "gif" "swf" "svg" ) | |
# Usage: includes 'blabla' $arr | |
includes () { | |
local e | |
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done | |
return 1 | |
} | |
rename() { | |
for entity in "$1"/*; do | |
dir="$(dirname "$entity")" | |
base="$(basename "$entity")" | |
new_name="$dir/${base/my-old-name/my-new-name}" | |
if [ ! "$entity" = "$new_name" ]; then | |
mv "$entity" "$new_name" | |
fi | |
if includes "${new_name##*.}" "${forbidden_extensions[@]}"; then | |
echo "FILE IS FORBIDDEN:" "${new_name}" | |
fi | |
if [[ -d "$new_name" ]]; then | |
rename "$new_name" | |
elif [[ -f "$new_name" ]]; then | |
if includes "${new_name##*.}" "${forbidden_extensions[@]}"; then | |
echo "FILE IS FORBIDDEN:" "${new_name}" | |
else | |
sed -i '' 's/my-old-name/my-new-name/g' "$new_name" | |
fi | |
fi | |
done | |
} | |
# rename everything inside ./my-dir | |
rename ./my-dir |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment