Прошу помощи.
Задача состоит в том, чтобы перевести имена файлов и каталогов из
одной кодировки в другую. Может у кого есть совет или готовое решение?
В FAQ сказано только про перевод содержимого файлов, а не их названий...
Я наваял вот это, по идее должно работать. При строчке в тексте
iconv -f UTF8 -t UTF8 просто проходит по всему дереву каталогов и
меняет имена файлов и каталогов с добавлением к их названию "_NEW".
Еслиже подсунуть вот такой iconv -f UTF8 -t KOI8-R, то скрипт не
работает и создает не те каталоги и не там. Подозрение на работу с
регулярными выражениями. Бился вчера пол дня.
#!/usr/bin/perl -w
use strict;
my @files = `du -a ./начало | awk '{ print \$2}' | sort`;
my $value;
my $new_name;
my $count = $#files;
my $i;
my $j;
for($i=0;$i<=$#files;$i++)
{
$value = $files[$i];
chomp $value;
print $value . "\n";
$new_name = `echo "$value" | iconv -f UTF8 -t KOI8-R`;
chomp $new_name;
$new_name .= "_NEW";
print ">>> " . $new_name . "\n";
rename($value,$new_name);
for($j=$i+1;$j<=$#files;$j++)
{
$files[$j] =~ s{$value}{$new_name};
}
}
exit();
Да, тестовое дерово создал при помощи вот этого
#!/bin/sh
PATH="./начало";
/bin/rm -rf $PATH;
/bin/mkdir $PATH;
for i in 1 2 ; do
/bin/mkdir "$PATH/уровень_$i";
for j in 1 2 3 ; do
/bin/mkdir "$PATH/уровень_$i/уровень_$i-$j";
for k in 1 2 3 4; do
/bin/mkdir "$PATH/уровень_$i/уровень_$i-$j/уровень_$i-$j-$k";
for l in 1 2 3 4 5; do
:> "$PATH/уровень_$i/уровень_$i-$j/уровень_$i-$j-$k/файл_$i-$j-$k-$l.txt"
;
echo "Тестовый текст UTF-8" >> "$PATH/уровень_$i/уровень_$i-$j/уровень_$i-$j-$k/файл_$i-$j-$k-$l.txt"
;
echo "$i-$j-$k-$l" >> "$PATH/уровень_$i/уровень_$i-$j/уровень_$i-$j-$k/файл_$i-$j-$k-$l.txt"
;
echo "" >> "$PATH/уровень_$i/уровень_$i-$j/уровень_$i-$j-$k/файл_$i-$j-$k-$l.txt"
;
done
done
done
done

Ответ на:
комментарий
от borisych

Ответ на:
комментарий
от jackill
Ответ на:
комментарий
от boatman
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Perl - помогите найти ошибку (2013)
- Форум bash удаление символов из имен файлов и каталогов (2024)
- Форум Как с помощью git переносить данные из одного репозитория в другой и конвертировать кодировку? (2014)
- Форум Отслеживание изменения прав доступа на несколько файлов, проблема с индексами (2024)
- Форум [mpd][софт]Может быть кому окажется интересным (2010)
- Форум Решил освоить perl =) (2005)
- Форум unicode & tr (2006)
- Форум удаление лишних торрент-закачек (2012)
- Форум Backup Btrfs на флешку (2019)
- Форум Debian USB automount (2023)