Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Igor Nikolaev                        2:5030/266     12 Dec 2000  22:35:59
 To : "Alex V. Litovchenko"
 Subject : Re: еще один идиотский вопрос
 -------------------------------------------------------------------------------- 
 
 Alex V. Litovchenko <avl@partner.donetsk.ua> wrote:
 
 > КАК дерево с каталогами и файлами перевести
 > в нижний регистр (названия) киньте плс скрипт
 
 cat >recurse.pl <<EOF
 
 #!/usr/bin/perl -w
 use strict;
 my $command = $ARGV[0] || 'print "%%\n"';
 my $directory = $ARGV[1] || '.';
 
 # work
 sub function { 
   ( my $file = $_[0] ) =~ s/("|\$)/\\$1/g;      # '"' and '$'
   ( my $cmd = $command ) =~ s/%%/$file/g;       # %% is file
   eval $cmd; die $@ if $@; # run command and die if errors
 }
 
 # walk
 sub recurse {
   my $dir = $_[0];
   opendir DIR, $dir or die "Can't opendir $dir: $!";
   my @files = sort grep { !/^\.{1,2}/ } readdir DIR;
   closedir DIR;
   foreach ( @files ) {
     my $file = $dir eq '.' ? $_ : "$dir/$_";
     -d $file ? &recurse($file) : &function($file);
   }
 }
 
 # main
 &recurse ( $directory );
 EOF
 
 Использование: перебираемое имя файла обзывается '%%'
 Второй параметр позволяет задать стартовый каталог.
 
 Вот пример переименования всех файлов в верхний регистр:
 % recurse 'print "mv %% ",lc("%%"),"\n"' | sh
 
 Можно конечно и сразу написать что-то типа
 recurse 'rename "%%", lc("%%")'
 выкинув экранирование дурацких символов в именах,
 но я обычно таки сначала глазками смотрю, а затем
 shelly скармливаю, чай не часто делаем ;-)
 
 -- 
 Игорь Hиколаев
 --- ifmail v.2.12.os.sensi
  * Origin: Добавить воблы и пива по вкусу. (2:5030/266@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: еще один идиотский вопрос   Igor Nikolaev   12 Dec 2000 22:35:59 
Архивное /ru.unix.bsd/13416652a00a9.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional