Bash: find all symbolic links recursively
Метки: linux | shell | программирование
Понедельник, 25 ноября 2013 г.
Подписаться на комментарии по RSS
It would seem there is no problem to find all symbolic links within the directory recursively like
find . -type l
. This is exactly how I hoped to make it, but got not the result I expected.
Actually, this way we don't get those symbolic links that are located within the directories which, in its turn, are pointed by the symbolic links that are found in the directory of initial search. It is complicated enough, but I think you see the issue :)
So this is how to solve it:
1. You can use ls recursively and so that this command will follow all the symbolic links found and search new links there.
ls -lR . | grep ^l
2. Another way is to take advantage of find command, but note, firstly, there must be -l option which will allow us to follow symbolic links already found, and secondly, pay attention that I use -xtype instead of -type. This is due to the fact that:
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.
Thus, the second solution:
find -L . -xtype l