如何找到没有软链接的dirs?

时间:2016-01-18 12:13:32

标签: linux bash shell

我有一个目录包含几个子目录:

./abc/
./cde/
./link_to_abc -> ./abc

abc和cde是普通目录,但link_to_abc是一个目标为abc的软链接。

现在我想用linux的find命令找到没有软链接的普通dirs,在我的例子中,它是cde。怎么做?

因为我需要删除一些目录,但我应该检查没有人再使用我的文件了(没有其他符号链接指向我的目录)

2 个答案:

答案 0 :(得分:3)

以下解决方案使用多个find但应该有效:

# step1: list all directories:
$ find /absolute/path -type d | sort > real_dirs.txt
# step2: list all files "pointed" by a symlink:
$ find /absolute/path -type l -exec readlink -f {} \; | sort > sym_dirs.txt
# step3: get directories not "pointed" by symlinks:
$ comm -23 real_dirs.txt sym_dirs.txt 

答案 1 :(得分:1)

使用find ! -type lfind -type d

检查这个答案 https://stackoverflow.com/a/16303559/3343045