对于linux中的给定目录树,我想列出:
考虑一个空目录,然后执行
mkdir a
mkdir a/b
ln -s a c
echo "x" > f1
ln -s f1 f2
然后find . -type d
给出了
.
./a
./a/b
所以错过了符号链接./c
,而find . -type l
给出了
./c
./f2
错过了目录.
,./a
和./a/b
,另外还打印了符号链接./f2
,它不是目录的符号链接,而是一个文件。
答案 0 :(得分:5)
使用-H
选项:
导致为命令行中指定的每个符号链接返回的文件信息和文件类型(请参阅stat(2)) 链接引用的文件,而不是链接本身。如果引用的文件不存在,则文件信息和类型将用于链接本身。不在命令行上的所有符号链接的文件信息是 链接本身。
所以:
find -H . -type d
将列出目录和目录链接。
答案 1 :(得分:2)
你可以说:
while read -r name; do
[ -d "$name" ] && echo "$name";
done < <(find .)