I did pick up on the -type f and fixed another problem, so my code now looks like this:
#!/usr/bin/perl my $h="testapp01"; my $dirname="/home/wasbatsrv/tmp/testbak"; my $uid="wasbatsrv"; my @r_files= qx(ssh $uid\@$h 'find $dirname -type f'); my @remote_files; # Munge filenames to commands: my $x; # The following is necessary because the values in @r_files have # some kind of funky linefeed that chomp does not get rid of foreach my $f (@r_files) { $x = substr($f, 0, -1); push @remote_files, $x; } my @commands = map { sprintf "mv -f '%s' '%s.bak'", $_, $_ } @remote_ +files; print @commands, join "\n"; my $remote= \*STDOUT; # Use this to actually do the remote execution: open $remote, "| ssh -q -l $uid $h"; print { $remote } join "\n", @commands;
This is the result I get and the script never returns:
mv -f '/home/wasbatsrv/tmp/testbak/one.properties.bak' '/home/wasbatsrv/tmp/testbak/one.properties.bak.bak'mv -f '/home/wasbatsrv/tmp/testbak/testbakr/three.properties.bak' '/home/wasbatsrv/tmp/testbak/testbakr/three.properties.bak.bak'mv -f '/home/wasbatsrv/tmp/testbak/testbakr/four.properties.bak' '/home/wasbatsrv/tmp/testbak/testbakr/four.properties.bak.bak'mv -f '/home/wasbatsrv/tmp/testbak/two.properties.bak' '/home/wasbatsrv/tmp/testbak/two.properties.bak.bak'cc_admin@ivlpvlq bin$ Pseudo-terminal will not be allocated because stdin is not a terminal. ^C
The following command does work when I run it alone: ssh -q -l wasbatsrv testapp01 mv -f '/home/wasbatsrv/tmp/testbak/one.properties' '/home/wasbatsrv/tmp/testbak/one.properties.bak'
In reply to Re^6: Rename all files on remote server to *.bak recursively
by nancylt723
in thread Rename all files on remote server to *.bak recursively
by nancylt723
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |