UNIX查找包含2个以上文件的目录



我有一个包含一千个子目录的目录。我只想" ls"包含超过2个文件的所有目录。我不需要包含少于2个文件的目录。这是在C壳中,而不是bash。有人知道这是一个很好的命令吗?

我尝试了此命令,但没有给出所需的输出。我只是想要拥有2个以上文件的目录的完整列表。它不起作用的原因是因为它将进入这些dirs中的sub dirs,以查找它们是否有2个以上的文件。我不想递归搜索。只是他们所在的主要目录中的第一级目录列表。

$ find . -type f -printf '%hn' | sort | uniq -c | awk '$1 > 2'

我的错误,我在想bash而不是CSH。尽管我没有CSH可以测试,但我认为这是同一件事的CSH语法:

foreach d (*)
  if (d "$d" && `ls -1 "$d"|wc -l` > 2) echo "$d"
end

我已经添加了一个警卫,因此不是不必要的处理,并且在有任何"有趣"的文件或目录名称(包含空格,例如(。

一个可能的问题(我不知道您的确切任务是什么(:任何直接的子目录也将被视为文件。

对不起,我在这里在Bash工作:

for d in *;do if [ $(ls -1 $d|wc -l) -gt 2 ];then echo $d;fi;done

对于更快的解决方案,您可以尝试"作弊",如果您使用纯Unix,则可以解构目录本身的格式。他们只是用内容来分析的内容,在这种情况下可以分析。不用说这是不可移植的,例如窗户上运行的任何bash,因此不建议。

最新更新