![rsync 排除文件夹不起作用?](https://linux22.com/image/121178/rsync%20%E6%8E%92%E9%99%A4%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我正在尝试将项目中的 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/