使用linux find命令查找目录和目录的符号链接

时间:2013-11-28 07:35:37

标签: linux bash shell command find

对于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,它不是目录的符号链接,而是一个文件。

2 个答案:

答案 0 :(得分:5)

使用-H选项:

  

导致为命令行中指定的每个符号链接返回的文件信息和文件类型(请参阅stat(2))        链接引用的文件,而不是链接本身。如果引用的文件不存在,则文件信息和类型将用于链接本身。不在命令行上的所有符号链接的文件信息是                链接本身。

所以:

find -H . -type d

将列出目录和目录链接。

答案 1 :(得分:2)

你可以说:

while read -r name; do
  [ -d "$name" ] && echo "$name";
done < <(find .)