Rsync

在數万個文件上使用帶有 --include 過濾器的 rsync

  • December 6, 2020

我試圖僅複製與模式匹配的文件, player00_0[1..5]*.*其中[1..5]在文件名中的該位置表示具有 1、2、3、4 或 5 的文件。源目錄中有 40K 文件,所以我們不能使用任何 bashglobs來完成這項工作。

這是我的嘗試:

indir=playout40kem
outdir=visible5k
rsync -am --include='player00_01*.*' --include='player00_02*.*' 
         --include='player00_03*.*' --include='player00_04*.*' 
         --include='player00_05*.*' $indir/ $outdir

但是結果是所有文件都被複製。進行此過濾的正確方法是什麼?

來自https://unix.stackexchange.com/a/582184/66602缺少的部分是:

--exclude="*" . 它必須遵循以下include=條目:

rsync -am --include='player00_01*.*' --include='player00_02*.*' 
         --include='player00_03*.*' --include='player00_04*.*' 
         --include='player00_05*.*' --exclude="*" $indir/ $outdir

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