Shellscript循环遍历所有文件并调整符号链接

时间:2012-12-06 12:37:41

标签: macos bash loops symlink

我试图在iOS上运行libetpan,但是他们的设置shell脚本似乎有问题(这里有更多detail解释的问题)..但基本上我得到了一个带有一长串指向无处的符号链接列表的文件夹,即

mhdriver_types.h -> ../../src/driver/implementation/mh/mhdriver_types.h

实际上它应该是

mhdriver_types.h -> ../../../src/driver/implementation/mh/mhdriver_types.h 

我想编写一个shell脚本,循环遍历所有符号链接,删除每个符号链接,然后为它重新创建一个符号链接到同一个前目的地只有一个更深的子目录..基本上我在示例中对所有文件做了。

任何想法?

2 个答案:

答案 0 :(得分:3)

受到anishsane的answer的启发,我得到了这个有效的代码:

for name in $(find . -type l); do
    tgt=`readlink "$name"`
    ln -sf ../$tgt
done

答案 1 :(得分:1)

尝试:

find $DIR_PATH -type l | while read x; do tgt=`readlink "$x"`; ln -sf ../$tgt $x; done