epcim
10/23/2015 - 12:42 PM

text remove diacritics .sh

text remove diacritics .sh

#!/bin/bash

srcenc=cp1250
srcenc=iso8859-2
srcenc=cp1252
srcenc=utf8

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

if [ $# -eq 0 ];then
  echo "Usage: $0 directory"
else
  while [ $# -gt 0 ];do
    if [ -d "$1" ];then
      find "$1" -mindepth 1 -maxdepth 1 | grep -v ".svn" | while read name;do
        #echo "INFO: Dir/Filename - $name"
        nname="$(iconv -f "$srcenc" -t "ascii//TRANSLIT" <<< "$name" )"
        nname="$(echo "$nname" | sed -e "s/’//g" )"
        if [ "$name" != "$nname" ];then
          if [ -e "$nname" ];then
            echo "WARNING: Filename already exist - $nname"
            i=0
            oname="$nname"
            while [ -e "$nname" ];do nname="$( printf "%s.%05i" "$oname" $i )";i=$(($i+1));done
          fi
		  ## custom fixes
		  #nname=`echo $nname | sed -e 's/.*/\L&/; s/[a-z]*/\u&/g; s/  /_/g; s/ /_/g'`
		  pname=`echo $nname | sed -e 's/\(.*\/\)\(.*\)/\1/'`
		  #echo $dname
		  if [ x`ls -ld ${name}|sed -e 's/^\(.\).*/\1/'` == "xd" ]; then
			#dir
			fname=`echo $nname | sed -e 's/\(.*\/\)\(.*\)/\2/; s/[a-z]*/\L&/g; s/[a-z]*/\u&/g; s/  //g; s/ //g'`
		  else
			#file
			fname=`echo $nname | sed -e 's/\(.*\/\)\(.*\)\.\(.*\)/\2\.\3/; s/[a-z]*/\L&/g; s/[a-z]*/\u&/g; s/  /_/g; s/ /_/g; s/_-_/-/g; s/\.-/-/g; s/\._/_/g;'`
		  fi
		  #echo $fname
		  nname="${pname}${fname}"
		  #echo $nname
		  # -e 's/.*\/  /_/g; s/.*\/ /_/g'`
          #svn rename "$name" "$nname"
          echo mv -v \"$name\" \"$nname\"
        fi
      done
      find "$1" -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0r "$0" | sed -e "s:[-a-zA-Z0-9_/. \]*.svn ::g"
      #find "$1" -mindepth 1 -maxdepth 1 -type f -print0 | xargs -0r "$0" | sed -e "s:[-a-zA-Z0-9_/. \]*.svn ::g"
      shift
    else
      echo "Directory $1 does not exist"
    fi
  done
fi
#restore $IFS
IFS=$SAVEIF