如何使用ssh访问目录的文件

时间:2013-10-18 14:54:27

标签: bash ssh

我试图将所有位于远程服务器上的目录中的文件拖尾,除了用户在命令行中输入的文件作为第三个参数。为此,我需要grep文件的类型,以避免在将tail的输出定向到另一个文件时出现混淆。

目录为/path/to/a/file,里面有两个文件,一个名为file.log,另一个名为file.out。我想grep .out&的.log

这是我的代码:

files=$(ssh host find /path/to/a/file -type f -name '^file')

for type in $($files | awk -F'.' '{print $2}') ; do

ssh host find . /path/to/a/file -type f ! -name "$3" | xargs 0 tail -n 20 > /destination/dir/host.$type 2>/dev/null

不幸的是,这一切都不起作用,我不知道为什么。

2 个答案:

答案 0 :(得分:1)

您的代码存在很多问题,但最重要的是您在第一行中应该存在find的参数,并在最后一行将它们传递给tail。具体来说是-type f ! -name "$3"

那会让你更接近。

一次构建脚本一步。把它写成

ssh host find ...

并确保输出正确的文件集。现在不是。

答案 1 :(得分:0)

这个正则表达式是问题所在:

-name '^file'

-name不接受正则表达式需要shell glob模式。

使用它应该适合你:

ssh host find /path/to/a/file -type f -name 'file*'

更新:从此列表中排除特定文件

ssh host find /path/to/a/file -type f \( -name 'file*' ! -name 'file.log00001' \)