我正在尝试通过这种方式从远程服务器复制文件:
transferFiles() {
for FILE in `ssh $USERNAME@$HOSTNAME find "${DIR}" -type f -mtime -1 -name "*log*" 2>/dev/null` ; do
rsync -zR $USERNAME@$HOSTNAME:$FILE "${DIRII}"
done
}
我想复制包含“log”的所有文件。
不幸的是,有些东西不起作用,我怀疑问题出在引号上,我尝试了很多解决方案,但仍然一无所获。
抱歉我说得不够详细。我试图在echo $FILE
循环内部检查是否有东西被发送到这个变量。 echo 没有显示任何内容,这就是为什么我假设问题出在第一行。另外我试图直接执行
ssh $USERNAME@$HOSTNAME find "${DIR}" -type f -mtime -1 -name "*log*"| less
但输出为空。在这种情况下,解决方案是在单引号内插入 find
ssh $USERNAME@$HOSTNAME 'find "${DIR}" -type f -mtime -1 -name "*log*"'| less
这个正在工作。但现在我的问题是如何将其应用到脚本中。我不能做这样的事情:
transferFiles() {
for FILE in `ssh $USERNAME@$HOSTNAME 'find "${DIR}" -type f -mtime -1 -name "*log*"' 2>/dev/null` ; do
rsync -zR $USERNAME@$HOSTNAME:$FILE "${DIRII}"
done
}
我还尝试了双引号,除了 ssh 和 find 的单引号。交替引用" ' ' "
也不能解决这个问题。
答案1
所以,最后我找到了解决方案。问题是缺少反斜杠 \ 在-name "*log*"'
这种情况下,整个查找的单引号是不必要的。
ssh $USERNAME@$HOSTNAME find "${DIR}" -type f -mtime -1 -name "\*log*"| less
这是正常工作的。