在另一个目录中递归“查找”包含字符串和符号链接文件的文件名

Chr*_*ris 3 find symlink ln

我正在尝试符号链接我正在处理的项目中的一组特定文件。

我希望符号链接的每个文件名中都有一个已知字符串。

这是我到目前为止所拥有的:

ln -s find ~/path/to/src/ -name "*stringtomatch*" find ~/path/to/dest
Run Code Online (Sandbox Code Playgroud)

我在目标中设置了目录结构以匹配源,但它只是目录,因此如果为空目标编写命令更容易,我不介意删除它们。

更新:

我现在已经接受了一个有效的答案,我想分享一些上下文,以便类似的用例可以更容易地找到解决方案。

我在 Netbeans 中执行大部分编码。当我为一个项目构建包时,我倾向于命名所有关联的文件,以便它们具有共同的文件名的一部分。这使我可以在项目中四处移动时轻松找到自己的包文件。然而,在我当前的项目中,由于涉及大量文件和目录,这非常耗时。

我现在拥有的是为我自己的每个包定义的单独项目,它仅显示该包的文件,同时维护主项目层次结构。

通过在主项目中构建使用符号链接到我的包文件的单独包项目,我有效地创建了我认为是完美的解决方案,在 Netbeans IDE 中似乎没有当前形式的可用解决方案。

每个子项目什么都不做,只允许我处理仅与自身相关的文件子集,这确实使我在键盘上的时间更有效率。

我相信 Eclipse 内置了这个功能,尽管我没有 Eclipse。

因此,尽管是一种妥协,但我相信 Netbeans 的这种解决方法与我今天可以实现的解决方案一样干净。如果不是比我预期的要好,它也能正常工作,这是一个巨大的奖励。

我曾期望在编辑子项目后运行主文件的手动同步。事实并非如此,主站仍然保持自动同步。

wur*_*tel 5

如果你已经在目标位置创建,然后用的GNU实现必要的目录findxargs,这不是太困难:

find ~/path/to/src -name "*stringtomatch*" -printf "%P\0" |
  xargs -r0 --replace ln -s ~/path/to/src/'{}' ~/path/to/dest/'{}'
Run Code Online (Sandbox Code Playgroud)

-printf "%P\0"输出移除了源目录参数,并以空字节端的路径。

xargs然后读取find输出。

-0 指示要使用的参数是空分隔的。

--replace告诉 xargs{}用参数替换(也意味着每个参数运行一个命令)。

最后给出了将参数替换为的命令。