【问题标题】:SCP a file that match a particular pattern and extensionSCP 匹配特定模式和扩展名的文件
【发布时间】:2015-09-30 02:36:09
【问题描述】:

我正在尝试将文件从远程主机 SCP 到本地主机。

远程主机上的文件是 KMST_DataFile_[MMDDYY]T[HHMM].kms

我想出了 2 个 SCP 命令,但我想知道是否有办法将这些命令结合起来,以仅匹配上述文件名模式和扩展名 .kms 的 SCP 文件

scp -v user@remotehost:/location/KMST_DataFile_*

scp -v user@remotehost:/location/{*.kms}

【问题讨论】:

  • 您需要了解像* 这样的未加引号的元字符是由您的本地shell 扩展的(即在您的本地机器上)。

标签: linux unix scp


【解决方案1】:

这里主要是使用递归模式-r,即使你复制的是文件而不是目录。它有效。

如果您想复制以“val”开头并包含字符串“v2”的文件,请使用:

scp -r makis@server.gr:/media/Data/results/val*v2* /Users/makis/Desktop/

在这里,vecs*v2* 将展开并仅获取以val 开头并且还包含v2 字符串的文件。


同样,如果文件以.png 结尾,例如使用:

scp -r makis@server.gr:/media/Data/results/val*.png /Users/makis/Desktop/

【讨论】:

    【解决方案2】:

    这将完成你的工作:

    scp -v user@remotehost:/location/KMST_DataFile_*.kms
    

    【讨论】:

    • 真的没有帮助,还是我错了?至少从 MacOS 到 Ubuntu,asterix 没有扩展。
    • 你必须转义星号字符,所以它会更像这样:scp -v user@remotehost:/location/KMST_DataFile_*.kms
    【解决方案3】:
    ssh user@host 'tar cf - /location/KMST_DataFile_* /location/{*.kms}' | tar tvpf -
    

    请注意,这些taroptions 只为您提供目录。您需要在提取之前进行检查,并且几乎可以肯定会删除绝对路径。

    【讨论】:

    • 另请注意,他并没有以一种聪明的 globbing 方式回答问题,即一个文件 glob 可以捕获所有文件,而是当文件 glob 获胜时的更通用的解决方案不会。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多