Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 21st, 2012  |  syntax: None  |  size: 0.89 KB  |  hits: 20  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/bin/bash
  2. # I wrote this script to change the encoding of a large
  3. # source code repository with inconsistent file encoding
  4.  
  5. SOURCE_DIR=$1
  6. FILE_MASK="*.$2"
  7. DESTINATION_ROOT=$3
  8.  
  9.  
  10. if [ $# -ne 3 ]; then
  11.   echo "3 args needed SOURCE_DIR, FILE_MASK, DESTINATION_ROOT"
  12.   exit;
  13. fi
  14.  
  15. for SOURCE_FILE in `find $SOURCE_DIR -iname "$FILE_MASK"`; do
  16.   ENCODING=`file -bi $SOURCE_FILE`
  17.   ENCODING=${ENCODING##*=}
  18.   # The windows CP1252 encoded files show up as unknown-8bit
  19.   if [ "$ENCODING" == "unknown-8bit" ]; then
  20.     ENCODING='CP1252'
  21.   fi
  22.   DESTINATION="$DESTINATION_ROOT/$SOURCE_FILE"
  23.   DESTINATION_DIR=$DESTINATION_ROOT/`dirname $SOURCE_FILE`
  24.  
  25.   if [ ! -d "$DESTINATION_DIR" ]; then
  26.     mkdir -p $DESTINATION_DIR
  27.   fi
  28.   echo "converting $SOURCE_FILE from $ENCODING to $DESTINATION"
  29.   iconv -f $ENCODING -t UTF-8 $SOURCE_FILE > $DESTINATION
  30. #  echo ">> $DESTINATION is encoded: `file -bi $DESTINATION`"
  31. done