【发布时间】:2019-12-09 09:19:33
【问题描述】:
我有一个包含一千多个子目录的目录。我只想 'ls' 包含超过 2 个文件的所有目录。我不需要包含少于 2 个文件的目录。这是在 C-shell 中,而不是 bash。有人知道这方面的好命令吗?
我试过这个命令,但它没有给出想要的输出。我只是想要包含 2 个以上文件的目录的完整列表。它不起作用的一个原因是因为它会进入这些目录中的子目录以查找它们是否有超过 2 个文件。我不想要递归搜索。只是它们所在的主目录中的一级目录列表。
$ find . -type f -printf '%h\n' | sort | uniq -c | awk '$1 > 2'
【问题讨论】:
-
我会使用
find . -d来查找和打印目录。我会将它传送到一个循环中,该循环在它找到的每个目录上执行ls -1并将其传送到wc -l并在变量中捕获输出。然后我可以测试该变量,如果大于 2,我将再次在目录上重新运行ls,而不重定向输出。要将搜索限制在顶级目录,我会将-depth -2添加到find命令。但我不是 csh 程序员,所以我不能告诉你如何在 csh 中编写循环。