我正在尝试对一个目录中的三个最新文件进行 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/