使用Bash scp三个最新文件

Gab*_*yme 4 bash scp

我正在尝试scp目录中的三个最新文件.现在我用它ls -t | head -3来找出他们的名字,然后在scp命令中写出来,但这变得很艰难.我尝试使用,ls -t | head -3 | scp *username*@*address*:*path*但这没用.最好的方法是什么?

ltc*_*ltc 7

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

scp `ls -t | head -3` user@server:.
Run Code Online (Sandbox Code Playgroud)

使用xargs具有处理文件名中的空格的优点,但会执行scp三次

ls -t | head -3 | xargs -i scp {} user@server:.
Run Code Online (Sandbox Code Playgroud)

基于循环的解决方案看起来像这样.我们在这里读取时使用,因为read的默认分隔符是换行符,而不是像for循环那样的空格字符

ls -t | head -3 | while read file ; do scp $file user@server ; done
Run Code Online (Sandbox Code Playgroud)

令人遗憾的是,一个完美的解决方案,一个执行单个scp命令,同时与白色空间很好地工作,目前躲过我.