获取所有目录中只有一个特定文件的目录

获取所有目录中只有一个特定文件的目录

我在远程服务器上有一系列目录(D1、D2、D3...),每个目录包含多个同名文件(f1、f2、f3)。

我在远程服务器上有:
D1: f1, f2, f3
D2: f1, f2, f3
D3: f1, f2, f3


我想要在本地计算机上使用:
D1: f1
D2: f1
D3: f1


我需要获取所有仅包含 f1 的目录(D1/f1、D2/f1、D3/f1,...)。我知道 SFTP 不支持正则表达式,但是有其他方法可以做到这一点吗?如果这在 SFTP 中不可能,有没有办法使用 scp 或 rsync 来做到这一点?

答案1

rsync命令可以做到这一点

rsync --dry-run -avR remoteHost:'/path/to/./D*/f1' /path/to/target

正如 一样ssh,如果需要,该remoteHost组件也可以是remoteUser@remoteHost。源路径中的点/./标记了目录将包含在副本中的位置。如果您想写入当前目录,则/path/to/target可能是这样。.

例子

mkdir -p /tmp/src/D{1,2,3} /tmp/dst
touch /tmp/src/D{1,2,3}/f{1,2,3}

rsync -avR localhost:'/tmp/src/./D*/f1' /tmp/dst/
ls -R /tmp/dst

相关内容