【发布时间】:2015-04-19 20:52:24
【问题描述】:
我在 Debian 下编写 bash 脚本时遇到了麻烦。我有一个包含更多文件夹和文件的文件夹(它是一个文件夹树)。此树包含符号链接。我想递归地遍历整个结构,检测损坏的符号链接并以这种方式(绝对路径)打印它们(不是它们的目标,而是链接本身):
/tmp/Foo/Bar/symlink1
/tmp/Foo/symlink2
/tmp/Foo/Goo/symlink3
但我不想也不能使用经典
find -L $(path) -type l
因为它遵循给定结构之外的正确链接并检测结构之外的损坏链接,我不希望在我的打印输出中出现这些,因为我只想检测 $(path) 中给出的结构内部损坏的符号链接和所有它的子目录。你能帮帮我吗?我觉得这需要一些带有 readlink 和一些循环的黑魔法,但我不知道怎么做。谢谢你的建议! :)
【问题讨论】:
-
我不熟悉
-F。它有什么作用? -
find -F $(path) -type l => 跟随符号链接(取消引用符号链接并替换为引用的文件或目录),当它不能被跟随时 -type l 被执行并测试文件是否是符号链接。如果是,则打印出来。
-
find的哪个变体或版本支持-F? -
噢,对不起……我的意思是-L,该死的,我真的很累……-L……我的意思是找到-L
-
除了麻烦之外,
Foo和Bar之后的下一个变量应该是Baz而不是Goo。 :-)
标签: linux bash unix debian symlink