我需要连接到远程计算机,然后获取信息并通过管道进行while
循环。
ssh [email protected] "find ~/listfile/ -iname \"*log*\" |while read line; do cat $line; done"
上面的命令打印空行。我尝试find
自行检查命令,它确实有效并列出了文件。
ssh [email protected] "find ~/listfile/ -iname \"*log*\""
如何查看找到的文件的内容?
答案1
find
如果您要在远程服务器中列出具有匹配名称的文件,并且仅添加 if files ,则应该单独使用-type f
。
ssh USER@HOST 'find ~/listfile/ -type f -iname "*log*" '
如果您需要cat
找到的文件的内容,请find
按cat
如下方式使用。
ssh USER@HOST 'find ~/listfile/ -type f -iname "*log*" -exec cat {} +'
您的具体问题是$line
由本地 shell 扩展,因为它用双引号引起来。但无论如何,你的方法是循环find
结果的错误方法。看为什么循环查找的输出是不好的做法?了解详情。