Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何找到PWD中引用PWD之外文件的所有符号链接?unix_Shell_Unix_Hyperlink_Pwd - Fatal编程技术网

Shell 如何找到PWD中引用PWD之外文件的所有符号链接?unix

Shell 如何找到PWD中引用PWD之外文件的所有符号链接?unix,shell,unix,hyperlink,pwd,Shell,Unix,Hyperlink,Pwd,我可以通过命令在目录中找到所有链接: find . -type l 但我需要的链接,它只引用PWD以外的文件。 有人能说怎么做吗? 谢谢。我会做如下事情: find . -type l -exec readlink -f '{}' \; | grep -v "^`readlink -f ${PWD}`" for link in `find . -type l`; do X=$(dirname `readlink $link`); if [ $X != '.' ]; then echo $li

我可以通过命令在目录中找到所有链接:

find . -type l
但我需要的链接,它只引用PWD以外的文件。 有人能说怎么做吗?
谢谢。

我会做如下事情:

find . -type l -exec readlink -f '{}' \; | grep -v "^`readlink -f ${PWD}`"
for link in `find . -type l`; do X=$(dirname `readlink $link`); if [ $X != '.' ]; then echo $link; fi ; done
readlink-f
提供文件的规范路径,因此第一个命令提供链接路径,
grep
命令排除以当前路径开头的文件

如果您想记住哪些链接指向这些路径,以下是一种方法:

find . -type l -exec sh -c 'echo $(readlink -f "{}") "<-- {}"' \; \
  | grep -v "^$(readlink -f ${PWD})"

find-键入l-exec sh-c'echo$(readlink-f“{}”)“Ich将执行以下操作:

find . -type l -exec readlink -f '{}' \; | grep -v "^`readlink -f ${PWD}`"
for link in `find . -type l`; do X=$(dirname `readlink $link`); if [ $X != '.' ]; then echo $link; fi ; done

使用readlink时,我得到错误消息;solaris10@Dshell可能您的系统上没有安装
readlink
。您使用的是哪种操作系统?在我的Debian box上,
readlink
附带了coreutils包。如果您没有readlink,您可以用两行perl脚本编写自己的脚本,也可以使用
ls-L
sed和
awk
提取符号链接路径。自己编译readlink: