How do I check if a file is a symbolic link to a directory?
Just combine the two tests with &&
:
if [[ -L "$file" && -d "$file" ]]
then
echo "$file is a symlink to a directory"
fi
Here is a single command which will recursively list symlinks whose target is a directory (starting in the current directory):
find . -type l -xtype d
Reference: http://www.commandlinefu.com/commands/view/6105/find-all-symlinks-that-link-to-directories
A solution with find
and using a function:
dosomething () {
echo "doing something with $1";
}
find -L -path './*' -prune -type d| while read file; do
if [[ -L "$file" && -d "$file" ]];
then dosomething "$file";
fi;
done