From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Posted-Date: Fri, 13 Oct 2006 22:09:49 +0300 (EEST) X-Virus-Scanned: amavisd-new at telenet.dn.ua To: "ALT Linux Community" References: <20061013203122.3e96df7c@greg> Message-ID: Date: Fri, 13 Oct 2006 22:16:10 -0000 From: "Aleksander N.Gorohovski" Organization: DonNTU Content-Type: multipart/mixed; boundary=----------rsoCAUm92cPszwXf5MYqH4 MIME-Version: 1.0 In-Reply-To: <20061013203122.3e96df7c@greg> User-Agent: Opera M2/8.50 (Linux, build 1358) Subject: Re: [Comm] =?koi8-r?b?08vSydDUIM7BIGJhc2ggKHByb2JsZW0p?= X-BeenThere: community@lists.altlinux.org X-Mailman-Version: 2.1.9rc1 Precedence: list Reply-To: ALT Linux Community List-Id: ALT Linux Community List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Oct 2006 19:10:05 -0000 Archived-At: List-Archive: List-Post: ------------rsoCAUm92cPszwXf5MYqH4 Content-Type: text/plain; format=flowed; delsp=yes; charset=koi8-r Content-Transfer-Encoding: 8bit On Fri, 13 Oct 2006 16:31:22 -0000, Grigory Fateyev wrote: > Здравствуйте! > > Пишу скрипт, который должен в директории изменить в именах файлов > символы пробела на символы подчёркивания. Но почему то замена "mv" не > проходит. Что не так? Попробуйте немного Perl-овки :) ######################################################## # # Рекурсивная замена в именах каталогов/файлов: /s+/_/ # created by Aleksander Gorohovski (2006). This is free software. # angel@feht.dgtu.donetsk.ua use File::Find; die "Example usage:\n\t $0 \n" if ! @ARGV; $_="$ENV{PWD}/$_" for(@ARGV); my $a; while(! $a){ @Files=undef; find sub{push @Files,$File::Find::name if $> == 0 || (stat($File::Find::name))[4] == $>},@ARGV; $a=1; for my $df (@Files){ next if !length($df); my @d=split /\//,$df; $d[-1]=~s/\s+/_/g; my $dt=join '/',@d; if($df ne $dt){$a=0,print "$df => $dt\n" if rename($df,$dt)} } } exit; #------------------------------------ Это Вам поможет > #!/bin/bash > > DIR=~/www/testsed/ > IFS="\n" > > if [ -n "$DIR" ]; then > cd $DIR > for file in `ls *`; do > echo "$file" > cf=`echo "$file" | tr ' ' '_'` > echo $cf > if [ $cf != "$file" ]; then > mv "$file" $cf > fi > done > fi > > ~/cut.sh > file 1 > file 2 > file 3 > file_4 > file_1 > file_2 > file_3 > file_4 > mv: невозможно выполнить stat для `file 1\nfile 2\nfile 3\nfile_4': No > such file or directory > > ------------rsoCAUm92cPszwXf5MYqH4 Content-Disposition: attachment; filename=s_.pl Content-Type: application/octet-stream; name=s_.pl Content-Transfer-Encoding: Base64 IyEvdXNyL2Jpbi9wZXJsCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojCiMJ8sXL 1dLTydfOwdEg2sHNxc7BINcgyc3FzsHIIMvB1MHMz8fP1y/GwcrMz9c6IC9zKy9f LwojCWNyZWF0ZWQgYnkgQWxla3NhbmRlciBHb3JvaG92c2tpICgyMDA2KS4gVGhp cyBpcyBmcmVlIHNvZnR3YXJlLgojCWFuZ2VsQGZlaHQuZGd0dS5kb25ldHNrLnVh Cgp1c2UgRmlsZTo6RmluZDsKZGllICJFeGFtcGxlIHVzYWdlOlxuXHQgJDAgPGRp cj5cbiIgaWYgISBAQVJHVjsKJF89IiRFTlZ7UFdEfS8kXyIgZm9yKEBBUkdWKTsK Cm15ICRhOwp3aGlsZSghICRhKXsKICAgIEBGaWxlcz11bmRlZjsKICAgIAogICAg ZmluZCBzdWJ7cHVzaCBARmlsZXMsJEZpbGU6OkZpbmQ6Om5hbWUgaWYgJD4gPT0g MCB8fCAoc3RhdCgkRmlsZTo6RmluZDo6bmFtZSkpWzRdID09ICQ+fSxAQVJHVjsK ICAgIAogICAgJGE9MTsKICAgIGZvciBteSAkZGYgKEBGaWxlcyl7CgluZXh0IGlm ICFsZW5ndGgoJGRmKTsKCW15IEBkPXNwbGl0IC9cLy8sJGRmOwoKCSRkWy0xXT1+ cy9ccysvXy9nOwoJbXkgJGR0PWpvaW4gJy8nLEBkOwoJaWYoJGRmIG5lICRkdCl7 JGE9MCxwcmludCAiJGRmID0+ICRkdFxuIiBpZiByZW5hbWUoJGRmLCRkdCl9CiAg ICB9Cn0KZXhpdDsK ------------rsoCAUm92cPszwXf5MYqH4--