Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## zsh -x /bin/rename
- +/bin/rename:3> setopt nullglob
- +/bin/rename:81> folders .
- ## cat /bin/rename
- #!/usr/bin/env zsh
- # UIB-290708 SANITIZES FILE- AND FOLDER NAMES
- setopt nullglob
- folders () {
- # Ignore DVDs.
- for old in ^(AUDIO_TS|VIDEO_TS); do
- if [ -f "$old" ]; then
- files "$old"
- elif [ -d "$old" ]; then
- new=$(echo "$old" | tr "[:upper:]" "[:lower:]")
- new=$(echo "$new" | sed -e 's/ /_/g' -e 's/\./_/g' -e 's/[_-][()]/-/g' -e 's/[()][_-]/-/g' -e 's/[()]//g' -e 's/[_-]$//g' -e 's/[_-]\{2,\}/-/g' -e 's/[][`!,'\'']//g' -e 's/&/and/g')
- if [ "$old" != "$new" ]; then
- mv "$old" "$new"
- echo "$old -> $new"
- else
- echo "$old: nothing to do"
- fi
- cd "$new"
- folders "$new"
- cd ..
- else
- echo "$new: directory invalid"
- fi
- done
- }
- files () {
- old=$1
- new=$(echo "$old" | tr "[:upper:]" "[:lower:]")
- if [[ "$old" == *.* ]]; then
- # Take out the extension.
- extension=${new##*.}
- new=${new%.*}
- new=$(echo "$new" | sed -e 's/ /_/g' -e 's/\./_/g' -e 's/[_-][()]/-/g' -e 's/[()][_-]/-/g' -e 's/[()]//g' -e 's/[_-]$//g' -e 's/[_-]\{2,\}/-/g' -e 's/[][`!,'\'']//g' -e 's/&/and/g')
- new=$(echo "$new" | sed -e 's/^\([0-9]\{2,3\}\)_/\1-/g')
- # Put it back in.
- new="$new"."$extension"
- if [ "$old" != "$new" ]; then
- mv "$old" "$new"
- echo "$old -> $new"
- else
- echo "$old: nothing to do"
- fi
- fi
- }
- folders .
Add Comment
Please, Sign In to add comment