rsync 排除文件夹不起作用?

rsync 排除文件夹不起作用?

我正在尝试将项目中的 yaml 文件复制到 dist 文件夹,保留结构。然而它是node_modules我不想要的复制。如何使用 rsync 排除以及为什么我的以下命令不起作用?

rsync -R --exclude=node_modules ./**/**.yaml dist

注意我已经尝试过变体等:

rsync -R --exclude= node_modules ./**/**.yaml dist
rsync -R --exclude 'node_modules' ./**/**.yaml dist

我的文件夹结构:

projectroot
|--config/file.yaml
|
|--node_modules/somedir/somefile.yaml
|
|--src/somefolder/somefile.yaml

我希望以上内容在我的 dist 中显示为:

dist
|--config/file.yaml
|  
|--src/somefolder/somefile.yaml

答案1

我最终选择了:

rsync -avrmR --exclude='node_modules/' --include='*/' --include='*.yaml' --exclude='*' ./ ./dist

它的工作原理是,它首先排除 node_modules 文件夹中的所有内容,然后包含所有目录,然后仅包含 yaml 文件,然后排除其他所有内容。

答案2

我已经设法让这个工作如下:

$ rsync -r --exclude="node_modules" projectroot/* dist/

相关内容