在Unix / Linux中查找没有文件的目录

时间:2010-05-26 01:38:33

标签: linux unix find

我有一个目录列表

/home
  /dir1
  /dir2
  ...
  /dir100

其中一些没有文件。我如何使用Unix find来完成它?

我试过

find . -name "*" -type d -size 0 

似乎不起作用。

5 个答案:

答案 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”中使用引号。

你可以替换。通过您的参考文件夹。

我无法使用一条查找指令执行此操作。