比较远程计算机bash中的文件大小

时间:2017-10-16 12:23:38

标签: bash ssh

我使用sftp:

从远程计算机将一些文件复制到我的机器上
ssh user@remote_host '
find /file/location -type f -maxdepth 1 -size +400000c -name "TEXT_*"
'>> log

cat log | while read line; do

sftp user@remote_host <<EOF
get $line
EOF

done

rm log

我现在要做的是检查复制文件的文件大小是否与远程计算机上的文件相同。这就是我试过的:

ls -1 TEXT* | while read line;
do var=$(stat "/file/on/current/machine/$line");
   var2=`ssh -n user@remote_host 'ls -l /file/on/remote/$line | cut -d " " -f5 '`;
        if [ "$var" == "$var2" ];
        then
                echo "The file $line has the same dimension!";
        else
                echo "The file $line doesn't have the same dimension";
        fi;
done

问题是在ssh命令中无法识别变量$ line,它返回远程主机上所有文件的大小,而不仅仅是已复制的文件的大小。

谢谢!

1 个答案:

答案 0 :(得分:2)

这是因为$line在单引号内。变量仅以双引号插值。

var2=$(ssh -n user@remote_host "ls -l /file/on/remote/$line | cut -d ' ' -f5 ")