我有一个目录列表
/home
/dir1
/dir2
...
/dir100
其中一些没有文件。我如何使用Unix find
来完成它?
我试过
find . -name "*" -type d -size 0
似乎不起作用。
答案 0 :(得分:14)
您的查找是否有谓词{{1}}?
您应该可以使用-empty
答案 1 :(得分:1)
如果您是zsh用户,则可以随时执行此操作。如果你不是,也许这会说服你:
echo **/*(/^F)
**/*
将扩展到当前工作目录的每个子节点,()
是一个glob限定符。 /
限制与目录的匹配,F
将匹配限制为非空匹配。使用^
取消它会为我们提供所有空目录。有关详细信息,请参阅zshexpn手册页。
答案 2 :(得分:1)
-empty
报告空叶dirs。
如果你想找到空树,那么看看:
http://code.google.com/p/fslint/source/browse/trunk/fslint/finded
请注意,如果没有其他支持脚本,则无法使用脚本, 但你可能想安装fslint并直接使用它?
答案 3 :(得分:1)
您也可以使用:
find . -type d -links 2
。和...都算作链接,文件也是如此。
答案 4 :(得分:0)
Pimin Konstantin Kefalou的回答只打印了2个链接和其他文件(d,f,...)的文件夹。
我找到的最简单的方法是:
for directory in $(find . -type d); do
if [ -n "$(find $directory -maxdepth 1 -type f)" ]; then echo "$directory"
fi
done
如果您的名字带有空格,请在“$ directory”中使用引号。
你可以替换。通过您的参考文件夹。
我无法使用一条查找指令执行此操作。