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 --]
next prev 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