#!/usr/bin/perl
# Получаем аргументы
my $dir = $ARGV[0];
my $code = $ARGV[1];
if (length($code) < 2) { print "Введите кодировку после директории! Например:\nchange_coder.pl /etc/ utf-8\n"; exit; } # Получаем список файлов my @files = `find $dir`; # Удаляем лишние переходы на нову строку chomp @files; # интуитивно понятно... my $count = @files; my $a = 0; while ($a < $count){ # Парсим # Удаляем лишнее из строки $b = `file -i $files[$a] | awk '{ gsub(".+(charset=|binary)",""); print }'`; chomp $b; # удаляем, из строки нашу кодировку если наша кодировка $b =~ s/$code//; # если наша кодировкане найдена в строке if (length($b) > 1){
# перекодируем в темп
print "iconv -f $b -t $code $files[$a] -o /tmp/chk.tmp\n";
`iconv -f $b -t $code $files[$a] -o /tmp/chk.tmp`;
# переносим файл обратно с заменой ну и удаляем BOM если он там есть
print "mv /tmp/chk.tmp $files[$a]\n\n && sed -i '1 s/^\xef\xbb\xbf//' $files[$a]";
`mv /tmp/chk.tmp $files[$a] && sed -i '1 s/^\xef\xbb\xbf//' $files[$a]`;
}
$a++;
}
вторник, 31 января 2012 г.
Массовая перекодировка
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий