#!/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