最好通过一个例子来解释:
源目录:
- 文件-a-1.txt
- 文件-b-1.txt
目标目录:
- 文件-a-2.txt
预期结果:
- 文件-a-2.txt
- 文件-b-1.txt
仅当文件从源目录移动到目标目录且目标目录没有与文件名部分匹配的文件时,才将所有文件从源目录移动到目标目录。
答案1
解决方案:
列出目标目录中的文件
用 sed 替换为通配符匹配
管道到 rsync
--exclude-from
find target_dir | sed -r 's/\.\/(.+?)-.*/\1*/' | rsync --verbose --ignore-existing --exclude-from - src_dir/* target_dir