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

我想链接(ln -s)的所有文件在 /mnt/usr/lib//usr/lib/

有很多文件,怎样才能快速完成? :)

162537 次浏览
ln -s /mnt/usr/lib/* /usr/lib/

我猜,这是超级用户的。

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

发布的解决方案不会链接任何隐藏文件:

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

GNUcp有一个创建符号链接而不是复制的选项。

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

注意,这是一个没有找到 在 POSIX cp的 GNU 扩展。