epcim
10/20/2015 - 11:31 AM

"script that clean-up filename from spaces and non-ascii dirt"

"script that clean-up filename from spaces and non-ascii dirt"

#!/bin/bash

srcenc=cp1250

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 -type f | grep -v ".svn" | while read name;do
        echo "INFO: 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
          svn rename "$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"
      shift
    else
      echo "Directory $1 does not exist"
    fi
  done
fi


# restore $IFS
IFS=$SAVEIFS


exit 0

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

for i in `find $1 -name "*.doc" |grep -v ".svn" | sort -r`; do
    #n="$( echo "$name" | tr -- 'ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžż' 'AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzz' |  tr -cs -- '-0-9a-zA-Z_.\/' '_'   | tr -s -- '-_' '-_' | sed -e 's/^[-_]+//' -e 's/[-_]*-[-_]*/-/g' -e 's/[-_]+././g' -e 's/.[-_]+/./g;' )"
    n="$( echo $i | tr 'ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžż' 'AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzz'   )"
    [ -e "$n" ] && echo "DEST_ALREADY_EXIST: $i $n" || echo svn rename "$i" "$n";
done

# restore $IFS
IFS=$SAVEIFS




exit 0

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
        #nname="$( echo "$name" | tr '' 'AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzztszTSZ' | tr 'A-Z' 'a-z' | tr -cs -- '-0-9a-z_.' '_' | tr -s -- '-_' '-_' | sed 's/^[-_]\+//;s/[-_]*-[-_]*/-/g;s/[-_]\+\.\/./g;s/\.[-_]\+/./g;' )"
        #nname="$( echo "$name" | tr 'ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžżšžŠŽ' 'AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzztszTSZ' | tr 'A-Z' 'a-z' | tr -cs -- '-0-9a-z_.' '_' | tr -s -- '-_' '-_' | sed 's/^[-_]\+//;s/[-_]*-[-_]*/-/g;s/[-_]\+\.\/./g;s/\.[-_]\+/./g;' )"
        #nname="$( echo "$name" | tr 'ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžżšžŠŽ' 'AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzztszTSZ' | tr -cs -- '-0-9a-z_.' '_' | tr -s -- '-_' '-_' | sed -e 's/^[-_]+//' -e 's/[-_]*-[-_]*/-/g' -e 's/[-_]+././g' -e 's/.[-_]+/./g;' )"
        nname="$( echo "$name" | tr 'ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžż' 'AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzz' |  tr -cs -- '-0-9a-zA-Z_.\/' '_'   | tr -s -- '-_' '-_' | sed -e 's/^[-_]+//' -e 's/[-_]*-[-_]*/-/g' -e 's/[-_]+././g' -e 's/.[-_]+/./g;' )"
        if [ "$name" != "$nname" ];then 
          if [ -e "$nname" ];then
            i=0
            oname="$nname"
            while [ -e "$nname" ];do nname="$( printf "%s.%05i" "$oname" $i )";i=$[$i+1];done
          fi
          echo mv -v "$name" "$nname"
        fi
        #find "$1" -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0r "$0"
      done
      shift
    else
      echo "Directory $1 does not exist"
    fi
  done
fi```