在bash中,如何重命名使用rsync传输的文件?

时间:2014-09-02 09:40:05

标签: bash shell

我目前正在使用:

rsync -e ssh "$f" $destination:$destinationFolder/"$baseFileName.lck"

如果baseFileName中有空格,这不起作用。

我也在其他几个地方使用baseFileName,例如:

destChecksum="$(echo "$(ssh $destination md5sum $destinationFolder/"$baseFileName.lck")"| cut -d \  -f 1)"

此行也会在baseFileName中存在空格时中断。 请提出解决方案。

2 个答案:

答案 0 :(得分:0)

尝试

rsync -e ssh "$f" $destination:$destinationFolder/"${baseFileName// /\ }.lck"

答案 1 :(得分:0)

您需要使用反斜杠字符\来转义baseFileName中的空格。

因此,如果文件名为my file.txt,则需要将其值$baseFileName设为my\ file.txt

如果您从文件中获取baseFileName,则可以使用sed之类的工具来搜索并用反斜杠和空格字符替换空格字符。