当我看看ls -l
输出的最后一列时,我可以看到符号链接和每个符号链接的目标路径。是否有可以写入的命令或脚本来捕获目标路径并检查其存在?如何才能知道当前目录中每个符号链接的目标路径是否真的存在?
0
A
回答
2
以下bash
脚本会发现在当前目录中的所有环节,确定的目标路径是否存在:
for i in $(find . -type l -mindepth 1 -maxdepth 1); do
links_to=$(readlink $i);
echo -n "$i links to $links_to and that path ";
if [[ -e $links_to ]]; then
echo "exists";
else
echo "does not exist"
fi
done;
实例目录:
$ ls -l
total 2
-rw-r--r-- 1 user staff 0 Sep 26 14:54 a_file
lrwxr-xr-x 1 user staff 14 Sep 26 14:50 no_target -> does_not_exist
lrwxr-xr-x 1 user staff 21 Aug 13 14:50 has_target -> a_file
输出示例:
./no_target links to does_not_exist and that path does not exist
./sources links to a_file and that path exists
键盘命令使用find
过滤掉当前目录中不是链接的任何东西,并使用readlink
来确定链接的目标。
注: 某些系统没有readlink
命令。 在这种情况下,你可能想尝试添加以下bash函数顶端:在上面的脚本
my_readlink() { ls -ld "$1" | sed 's/.*-> //'; }
和2行改为调用该函数:
links_to=$(my_readlink $i)
但这通常是不太理想,因为你正在解析输出为ls -ld
,这是较慢和更容易出错的。
0
在bash
这将打印照片,无需目标的所有符号链接:
for f in $(find . -mount -type l)
do
[ ! -e "$f" ] && echo "$f"
done
相关问题
- 1. 如何知道当前目录树中是否存在文件
- 2. 如何获取当前符号链接目录的父目录?
- 3. 从当前链接中查找链接路径目录(javascript)
- 4. 如何确保Chef中的符号链接上存在目录路径?
- 5. 我怎么能知道从“LS”的目录是一个符号链接?
- 6. php getcwd()解析符号链接的目标而不是当前目录
- 7. 从每个目标目录到公共资源的符号链接目录
- 8. 检查目录是否符号链接?
- 9. 如何将目录符号链接复制为目标链接?
- 10. qt项目当前目录的路径
- 11. 如何检查路径的目标是否是目录?
- 12. 更改NGINX中符号链接目录的路径
- 13. 如何知道当前的路径是安全路径与否,在ASP.NET
- 14. Clearcase:如何知道在符号链接的目标上应用的标签
- 15. 如何检查目录是否是大厨的符号链接
- 16. 在python中,如何测试路径是否是符号链接?
- 17. 如何确定路径字符串中的当前目录?
- 18. 如何知道我的DirectoryEntry是否真的连接到我的LDAP目录?
- 19. 如何映射主机和客户机之间的共享nfs目录中的符号链接目标路径?
- 20. 如何防止emacs解析路径中的目录符号链接?
- 21. UNIX:在创建符号链接目录的目录,而不是
- 22. C#获取当前目录的真实路径
- 23. 如何知道递归目录结构中的文件路径
- 24. 是否有可能从FitNesse页面内知道FitNesse目录(root)的路径?
- 25. 如何才能知道symfony中的模型是否存在?
- 26. 目录是否由Hadoop缓存符号链接处理?
- 27. 如何知道目标c中是否存在对象用ARC
- 28. 如何将pwd更改为符号链接目录的实际路径?
- 29. 从符号链接目录
- 30. 符号链接目录
慎用'-depth';在BSD中只有一个参数找到。 GNU find需要使用“-mindepth”和“-maxdepth”谓词。 – 2012-09-26 19:12:18
Ignacio - 谢谢,修正。 – mwolfetech 2012-09-26 19:31:35