Re: Ext2 IFS и кодировка
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
Reply to: