查找目录树中指向该树外的所有符号链接

Mar*_*tus 9 symlink

我经常移动的目录树到其他地点或他们的tar文件拷贝到其他机器,我想必须检查是否在目录树中的任何符号链接的方法到驻地以外的点一个,因为这些将在移动破碎/复制目录。

bah*_*mat 7

您需要一个名为 的程序realpath,与find.

例如:

find . -type l -exec realpath {} \; | grep -v "^$(pwd)"
Run Code Online (Sandbox Code Playgroud)


col*_*ons 1

GNU coreutilsprovedes realpath,它解析符号链接。这样,您可以将每个符号链接的目标与当前工作目录进行比较,如下所示:

#!/bin/bash

find . | while read filename
do
  if realpath $filename | grep -E "^$PWD" > /dev/null
  then
    echo 'this file is safe'
  else
    echo 'this file links externally'
  fi
done
Run Code Online (Sandbox Code Playgroud)