#!/usr/bin/perl my $h="testapp01"; my $dirname="/home/wasbatsrv/tmp/testbak"; my $uid="wasbatsrv"; my @remote_files= qx(ssh $uid\@$h 'find $dirname'); # Munge filenames to commands: my @commands= map { sprintf "mv -i '%s' '%s.bak'", quotemeta($_), quotemeta($_) } @remote_files; # Send list of commands to the remote side: # First, a dry-run instead of actually doing that: my $remote= \*STDOUT; # Use this to actually do the remote execution: open $remote, "| ssh -q $uid\@$h"; print { $remote } join "\n", @commands; #### Pseudo-terminal will not be allocated because stdin is not a terminal. mv: cannot stat `\\/home\\/wasbatsrv\\/tmp\\/testbak\\\n': No such file or directory mv: cannot stat `\\/home\\/wasbatsrv\\/tmp\\/testbak\\/testbakr\\\n': No such file or directory mv: cannot stat `\\/home\\/wasbatsrv\\/tmp\\/testbak\\/testbakr\\/three\\.properties\\\n': No such file or directory mv: cannot stat `\\/home\\/wasbatsrv\\/tmp\\/testbak\\/testbakr\\/four\\.properties\\\n': No such file or directory mv: cannot stat `\\/home\\/wasbatsrv\\/tmp\\/testbak\\/two\\.properties\\\n': No such file or directory mv: cannot stat `\\/home\\/wasbatsrv\\/tmp\\/testbak\\/one\\.properties\\\n': No such file or directory #### [wasbatsrv@testapp01 testbak]$ ls one.properties testbakr two.properties