Néhány, általunk használt Bash és egyéb szkript.
#!/bin/bash # Created by LEXO, http://www.lexo.ch # Version 1.0 # # Ez a script konvertál minden alább megadott fájlt UTF-8 kódolásúra. # #checking Parameters if [ ! -n "$1" ] ; then echo "You did not supply any directory at the command line." echo "Meg kell adni a konvertálandó fájlok elérési útját." echo "" echo "Példa: $0 /path/to/directory" echo "" echo "Fontos: ne futtasd ezt a szkriptet ugyanabból a könyvtárból, ahol a konvertálandó fájlok vannak." exit fi # Ez a tömb minden fájlt tartalmaz (a binárisakat is!) # Nem minden fájlt szabad konvertálni, ezért # add meg, hogy mely fájltípusokat szeretnéd. filestoconvert=(htm html php txt tpl asp css js) # define colors # default color reset="\033[0;00m" # Sikeres konvertálás (zöld) success="\033[1;32m" # Nem kell konvertálni, mert már UTF-8 (kék) noconversion="\033[1;34m" # nem szerepel a konvertálandó fájltípusok között (fehér) fileskipped="\033[1;37m" # nem konvertálható (piros) fileconverterror="\033[1;31m" ## function to convert all files in a directory recusrively function convert { #clear screen first clear dir=$1 # Get a recursive file list files=(`find $dir -type f`); fileerrors="" #loop counter i=0 find "$dir" -type f |while read inputfile do if [ -f "$inputfile" ] ; then charset="$(file -bi "$inputfile"|awk -F "=" '{print $2}')" if [ "$charset" != "utf-8" ]; then #if file extension is in filestoconvert variable the file will always be converted filename=$(basename "$inputfile") extension="${filename##*.}" # If the current file has not an extension that is listed in the array $filestoconvert the current file is being skipped (no conversion occurs) if in_array $extension "${filestoconvert[@]}" ; then # create a tempfile and remember all of the current file permissions to be able to reapply those to the new converted file after conversion tmp=$(mktemp) owner=`ls -l "$inputfile" | awk '{ print $3 }'` group=`ls -l "$inputfile" | awk '{ print $4 }'` octalpermission=$( stat --format=%a "$inputfile" ) echo -e "$success $inputfile\t$charset\t->\tUTF-8 $reset" iconv -f "$charset" -t utf8 "$inputfile" -o $tmp &>2 RETVAL=$? if [ $RETVAL > 0 ] ; then # There was an error converting the file. Remember this and inform the user about the file not being converted at the end of the conversion process. fileerrors="$fileerrors\n$inputfile" fi mv "$tmp" "$inputfile" #re-apply previous file permissions as well as user and group settings chown $owner:$group "$inputfile" chmod $octalpermission "$inputfile" else echo -e "$fileskipped $inputfile\t$charset\t->\tSkipped because its extension (.$extension) is not listed in the 'filestoconvert' array. $reset" fi else echo -e "$noconversion $inputfile\t$charset\t->\tNo conversion needed (file is already UTF-8) $reset" fi fi (( ++i )) done echo -e "$success Done! $reset" echo -e "" echo -e "" if [ ! $fileerrors == "" ]; then echo -e "The following files had errors (origin charset not recognized) and need to be converted manually (e.g. by opening the file in an editor (IDE) like Komodo or Netbeans:" echo -e $fileconverterror$fileerrors$reset fi exit 0 } #end function convert() # Check if a value exists in an array # @param $1 mixed Needle # @param $2 array Haystack # @return Success (0) if value exists, Failure (1) otherwise} #end function in_array() # Usage: in_array "$needle" "${haystack[@]}" in_array() { local needle=$1 local hay=$2 shift for hay; do # echo "Hay: $hay , Needle: $needle" [[ $hay == $needle ]] && return 0 done return 1 } #end function in_array #start conversion convert $1
Használata: ./convert.sh /útvonal/a/konvertálandó/könyvtárhoz