如何在 bash 中将一个目录中的所有文件符号链接到另一个目录?

发布于 2024-08-03 04:22:38 字数 1459 浏览 7 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

如果没有 2024-08-10 04:22:38
ln -s /mnt/usr/lib/* /usr/lib/

我想,这属于超级用户。

ln -s /mnt/usr/lib/* /usr/lib/

I guess, this belongs to superuser, though.

反目相谮 2024-08-10 04:22:38

GNU cp 可以选择创建符号链接而不是复制。

cp -rs /mnt/usr/lib /usr/

请注意,这是在 POSIX cp 中找不到的 GNU 扩展

GNU cp has an option to create symlinks instead of copying.

cp -rs /mnt/usr/lib /usr/

Note this is a GNU extension not found in POSIX cp.

无风消散 2024-08-10 04:22:38
ln -s /mnt/usr/lib/* /usr/lib/
ln -s /mnt/usr/lib/* /usr/lib/
过潦 2024-08-10 04:22:38

发布的解决方案不会链接任何隐藏文件。要包含它们,请尝试以下操作:

cd /usr/lib
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done

如果您碰巧想要递归地创建目录并且仅链接文件(这样,如果您在目录中创建文件,它实际上位于 /usr/lib 中,而不是/mnt/usr/lib),你可以这样做:

cd /usr/lib
find /mnt/usr/lib -mindepth 1 -depth -type d -printf "%P\n" | while read dir; do mkdir -p "$dir"; done
find /mnt/usr/lib -type f -printf "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done

The posted solutions will not link any hidden files. To include them, try this:

cd /usr/lib
find /mnt/usr/lib -maxdepth 1 -print "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done

If you should happen to want to recursively create the directories and only link files (so that if you create a file within a directory, it really is in /usr/lib not /mnt/usr/lib), you could do this:

cd /usr/lib
find /mnt/usr/lib -mindepth 1 -depth -type d -printf "%P\n" | while read dir; do mkdir -p "$dir"; done
find /mnt/usr/lib -type f -printf "%P\n" | while read file; do ln -s "/mnt/usr/lib/$file" "$file"; done
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文