在远程机器上查找文件

Raj*_*eev 1 linux awk command sed find

您好,我正在尝试在远程计算机上执行以下命令,我该怎么做

ssh login.com find /nfs/repo/ -name ".user_repo.log" | \
  xargs cat | awk '{$NF=""; print $0}' |               \
  sed "1i Owner RepoName CreatedDate" | column -t
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息

 cat: /nfs/repo/new1/info/.user_repo.log: No such file or directory
 cat: /nfs/repo/new2/info/.user_repo.log: No such file or directory
Run Code Online (Sandbox Code Playgroud)

cat 命令试图在本地系统上查找文件,而这些文件存在于远程计算机上。我该如何处理这个问题

Ale*_*sky 5

如果你这样做:

ssh host command1 | command2
Run Code Online (Sandbox Code Playgroud)

然后 shell 将在管道处中断,因此您将得到“ssh host command1”作为一个命令运行(即远程),然后“command2”作为另一命令运行(即本地)。您可以强制所有命令通过用引号引起来远程运行:

ssh host "command1 | command2"
Run Code Online (Sandbox Code Playgroud)

请注意,由于命令中已经有引号,因此您可能必须在转义方面发挥创意。

或者,您可以将所有这些命令放入一个简短的 shell 脚本中,然后运行该脚本:

ssh host myscript.sh
Run Code Online (Sandbox Code Playgroud)

  • 对于 shellscript 来说+1,这似乎是唯一明智的方法。 (2认同)