批量修改符号链接实现思路

所需实现功能:

把dir目录中所有的链接的路径进行修改,格式为 /data/root/path/to/file -> /newdata/root/path/tofile ,即只修改最顶上两级的路径

实现思路:

下面这些要写成一个方法,方便递归

for file in `ls $dir`

{
  file="$dir/$file"
  if ( -h $file ) {          //如果是符号链接

    sourcefile=readlink $file    //符号链接所指向的路径

    sourcefile=`echo $sourcefile | sed "s, preg,replace,g"` //正则替换并重新赋值

    unlink $file          //去除符号链接

    ln -s $sourcefile $file      //重新建立符号链接

  }

  if ( -d $file ) { //如果遇到文件夹则递归

    ...

  }

}

需要用到的shell知识

if ( -h $file ) {

  command ...

}
-h 表示判断文件是否存在且是否是符号链接
readlink 获取文件所指向的目标路径
unlink 去除符号链接

ls -s sourcefile destfile 创建符号链接
原文地址:https://www.cnblogs.com/imoing/p/3356974.html