如何在目录树中找到所有符号链接? [英] How do I find all of the symlinks in a directory tree?
问题描述
我正在尝试在我的网站的目录树中查找所有符号链接.我知道我可以使用 find
来执行此操作,但我不知道如何递归检查目录.
I'm trying to find all of the symlinks within a directory tree for my website. I know that I can use find
to do this but I can't figure out how to recursively check the directories.
我试过这个命令:
find /var/www/ -type l
…后来发现/var/www
里面的内容是符号链接,所以把命令改成:
… and later I discovered that the contents in /var/www
are symlinks, so I've changed the command to:
find -L /var/www/ -type l
运行需要一段时间,但我没有找到匹配项.
it take a while to run, however I'm getting no matches.
如何使用它来检查子目录?
推荐答案
这会递归遍历/path/to/folder
目录,只列出符号链接:
This will recursively traverse the /path/to/folder
directory and list only the symbolic links:
ls -lR /path/to/folder | grep ^l
如果您也打算使用符号链接,则应使用 find
命令,但应包含 -L
选项;实际上 find
手册页说:
If your intention is to follow the symbolic links too, you should use your find
command but you should include the -L
option; in fact the find
man page says:
-L Follow symbolic links. When find examines or prints information
about files, the information used shall be taken from the prop‐
erties of the file to which the link points, not from the link
itself (unless it is a broken symbolic link or find is unable to
examine the file to which the link points). Use of this option
implies -noleaf. If you later use the -P option, -noleaf will
still be in effect. If -L is in effect and find discovers a
symbolic link to a subdirectory during its search, the subdirec‐
tory pointed to by the symbolic link will be searched.
When the -L option is in effect, the -type predicate will always
match against the type of the file that a symbolic link points
to rather than the link itself (unless the symbolic link is bro‐
ken). Using -L causes the -lname and -ilname predicates always
to return false.
然后试试这个:
find -L /var/www/ -type l
这可能会起作用:我在 find
手册页中找到了这个菱形:如果您使用的是 -type
选项,则必须将其更改为 -xtype
选项:
This will probably work: I found in the find
man page this diamond: if you are using the -type
option you have to change it to the -xtype
option:
l symbolic link; this is never true if the -L option or the
-follow option is in effect, unless the symbolic link is
broken. If you want to search for symbolic links when -L
is in effect, use -xtype.
然后:
find -L /var/www/ -xtype l
这篇关于如何在目录树中找到所有符号链接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!