Nicholas wrote: > Вопрос: какую команду мне надо дать чтобы изменить имена всех файлов во > всех каталогах на такие же, но в кодировке кои8. Видимо скрипт нужен.
вот мой старый скриптик, только надо заменить koi8 на cp1251 -- Best regards, Sergey Spiridonov
#!/bin/bash if [ "$1" == "conv2utf" ] then fname=`echo "$3" | iconv -f koi8-r -t utf-8 2>/dev/null` if [ "$?" == "0" -a "$3" != "$fname" -a -n "$3" -a -n "$fname" ] then testcorrect=`echo "$fname" | sed -e "s/[-Ð-Яа-Ñ0-9A-Za-z (),!./]//g"` if [ -z "$testcorrect" ] then if [ "$2" == "justprint" ] then echo "will mv $3 to $fname" else echo "moving $3 to $fname" mv "$3" "$fname" fi fi fi else #get fullname of the script pushd $(dirname ${0}) >/dev/null DIR=$(pwd) SNAME=${DIR}/$(basename ${0}) popd >/dev/null if [ -z "$1" -o '(' "$1" != "justprint" -a "$1" != "doit" ')' ] then echo "Script to convert directory tree from koi8-r to utf-8" echo "Usage:" echo "${SNAME} [justprint|doit [directory]]" echo "Will convert all files and directories in specified directory" echo "If directory is not specified, will start in current direcory" echo "With 'justprint' - do not do renaming, just print what will" echo "be done. To do actual renaming, you should say 'doit'." echo "You can start this script as much as you like on the same " echo "directory tree. Since it makes some checking, there will be" echo "no reencoding." exit 0 fi find $2 -type d -exec bash -c 'pushd "{}">/dev/null; find . -maxdepth 1 -print0| xargs --null -n 1 '${SNAME}' conv2utf '${1}'; popd >/dev/null' \; fi