我正在尝试使用下面的 sftp 将文件从远程服务器上的一个位置移动到另一个位置:
for i in a b c d
do
sftp $REMUSR <<EOM>>$OUT 2>&1
rename $SOURDIR/sample_${i}_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].gz $REMDIR
quit
EOM
:
:
done
但我收到消息:
无法重命名文件“/source/sample_a_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] .gz”到“/destin/”:没有这样的文件或目录
虽然这个文件存在于/source
我已经验证的目录下:
$ ls -l sample_a_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].gz
-rw-r--r-- 1 prd admin 112 May 23 09:16 sample_a_20140330.gz
答案1
FTP 的重命名命令不计算正则表达式。它将正则表达式解释为系统上不存在的文件名。您正在使用sftp
。另一种方法是使用ssh
:
for i in a b c d
do
ssh $user@$host "mv $SOURDIR/sample_a_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].gz $REMDIR"
done