我有一个正在工作的源代码控制系统,我无法修改它,它会将一堆文件分散在不幸的地方。我的 IDE 希望这些文件夹位于一个统一的位置。通常我只是对所有内容进行符号链接,但更糟糕的是,某些文件夹必须递归合并。我保证不存在重叠的文件名,但我们正在谈论数千个文件,比我手工处理的文件还要多。
我研究过 unionfs 和 aufs,但它是一台公司机器,所以不需要对内核进行修改(更不用说这些 wang chung 的“入门”文档)。
还有其他方法可以做到这一点吗?
答案1
我不知道您确切使用的工具以及它们对符号链接的行为方式,但您可以使用符号链接(或硬链接,如果需要)自动使用选项-s
(cp
或-l
硬链接)“复制”整个树。
让我们看一下下面的例子。
。 ├── 1 │ ├── s -> x │ ├── x │ ├── y │ └── z │ └── 1 └── 2 ├── 一个 │ └── 2 ├── b └── c
如果您希望将符号链接1/
文件放在2/
当前目录中,那么您可以简单地执行以下操作:
cp -ans "$PWD/1/"* 2/
现在2/
看起来像:
。 ... └── 2 ├── 一个 │ └── 2 ├── b ├── c ├── s -> /home/przemoc/links/1/s ├── x -> /home/przemoc/links/1/x ├── y -> /home/przemoc/links/1/y └── z └── 1 -> /home/przemoc/links/1/z/1
使用的选项说明cp
:
-a
或--archive
递归地保留属性、链接和复制目录(实际上是 的别名-dR --preserve=all
)-n
或--no-clobber
防止覆盖现有文件-s
或--symbolic-link
创建符号链接而不是文字复制
在这种情况下,源文件路径必须是绝对路径(这就是我使用的原因$PWD
),因为cp
“只能在当前目录中创建相对符号链接”。