Rsync

獲取只有一個特定文件的所有目錄

  • July 10, 2021

我在遠端伺服器上有一系列目錄(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 來做到這一點?

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

引用自:https://unix.stackexchange.com/questions/657784