bash - 使用 Bash 对三个最新文件进行 scp

标签 bash scp

我正在尝试对一个目录中的三个最新文件进行 scp。现在我使用 ls -t | head -3 找出他们的名字,然后把他们写在 scp 命令中,但这变得很费力。我尝试使用 ls -t |头-3 | scp *username*@*address*:*path* 但这没有用。执行此操作的最佳方法是什么?

最佳答案

也许是最简单的解决方案,但它不处理文件名中的空格

scp `ls -t | head -3` user@server:.

使用xargs的好处是可以处理文件名中的空格,但是会执行3次scp

ls -t | head -3 | xargs -i scp {} user@server:.

基于循环的解决方案如下所示。我们在这里使用 while read 是因为 read 的默认分隔符是换行符而不是 for 循环中的空格符

ls -t | head -3 | while read file ; do scp $file user@server ; done

遗憾的是,完美的解决方案,即执行单个 scp 命令,同时很好地处理空白,目前我还没有找到。

关于bash - 使用 Bash 对三个最新文件进行 scp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5524408/

相关文章:

ios - 如何在iOS项目中通过unix shell命令(或命令工具)修改 ".strings"文件?

amazon-web-services - 从 AWS EC2 实例下载文件到本地主机

linux - 带有 rsa 文件的 Picloud scp 不工作

linux - 如何在 Shell 脚本中制作 scp 询问我的密码

linux - 从远程服务器并行复制小文件

Bash:scp目录中的所有文件,但不是子目录

linux - 移动 30 分钟前的文件

bash - 如何检查字典是否包含bash中的键?

Bash:用管道杀死

用于字符串比较的 bash 脚本