ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: "Aleksander N.Gorohovski" <angel@feht.dgtu.donetsk.ua>
To: "ALT Linux Community" <community@lists.altlinux.org>
Subject: Re: [Comm] скрипт на bash (problem)
Date: Fri, 13 Oct 2006 22:16:10 -0000
Message-ID: <op.thdr48ajmb8vzs@oc.peooc.net> (raw)
In-Reply-To: <20061013203122.3e96df7c@greg>

[-- Attachment #1: Type: text/plain, Size: 1492 bytes --]

On Fri, 13 Oct 2006 16:31:22 -0000, Grigory Fateyev <greg@anastasia.ru>  
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 <dir>\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
>
>


[-- Attachment #2: s_.pl --]
[-- Type: application/octet-stream, Size: 684 bytes --]

  parent reply	other threads:[~2006-10-13 22:16 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-13 16:31 Grigory Fateyev
2006-10-13 16:43 ` Michael Shigorin
2006-10-13 18:09 ` Pavel Usischev
2006-10-14  5:06   ` Denis Kirienko
2006-10-13 22:16 ` Aleksander N.Gorohovski [this message]
2006-10-14  9:29 ` Sergei Boudnik
2006-10-14 11:07   ` Grigory Fateyev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=op.thdr48ajmb8vzs@oc.peooc.net \
    --to=angel@feht.dgtu.donetsk.ua \
    --cc=community@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git