我正在尝试阅读特定文件上的内容。我有多个这些文件所在的主机。我在ssh中传递下面的命令,以便它可以运行并获取输出。通过ssh传递find命令的问题
当使用下面的命令时,我得到指定的错误。 (其sshed到主机上,但没有任何反应)
$ ssh host "more $(find /my/path -name "test*")" find: 0652-010 The starting directory is not valid.
当使用EXEC它不工作,(其sshed到主机上,但没有任何反应)
$ ssh host "find /my/path -name "test*" -exec more {} \;"`
使用时,它正在xargs的预期
$ ssh host "find /my/path -name "test*" | xargs more"
有人能解释为什么方法1 & 2不工作?
请注意,如果我直接在远程主机上运行命令,每种方法都在工作。例如,以下所有命令在远程主机中按照预期工作。
more $(find /my/path -name "test*")
find /my/path -name "test*" -exec more {} \;
find /my/path -name "test*" | xargs more
我想找到的文件和阅读使用更多。方法3也有内部引号,但那个工作,然后为什么方法1不起作用?正如你所提到的,我试图逃避内部报价,但它不起作用。 – user1028948
啊,这是不同的...你看到find返回一个文件列表,而不是文件内容......你可以使用'xargs'来进一步处理(使用)这样的文件列表,但不能与'_''''''''''''''',因为你没有终端。该命令无法决定屏幕的长度,所以停止输出。相反,它会刷新整个文件,就像“猫”一样。这又意味着你可以将该输出传递给_local_命令:'ssh host“find/my/path -name \”test * \“| xargs cat”| more' ... – arkascha