unix - Unix 查找包含超过 2 个文件的目录
问题描述
我有一个包含一千多个子目录的目录。我只想“ls”包含超过 2 个文件的所有目录。我不需要包含少于 2 个文件的目录。这是在 C-shell 中,而不是 bash。有人知道这个的好命令吗?
我试过这个命令,但它没有给出想要的输出。我只是想要包含超过 2 个文件的目录的完整列表。它不起作用的一个原因是它会进入这些目录中的子目录以查找它们是否有超过 2 个文件。我不想要递归搜索。只是它们所在的主目录中的一级目录列表。
$ find . -type f -printf '%h\n' | 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,则可以通过解构目录本身的格式来尝试“作弊”。它们只是文件本身,其中包含可以在这种情况下进行分析的内容。不用说这不是可移植的,例如在 Windows 上运行的任何 bash,所以不推荐。
推荐阅读
- ruby - 在 Ruby 中索引哈希键和值
- python - Azure Python CLI:使用运行命令调用的启动脚本在使用@而不是内联命令传递脚本文件时失败
- python - 比较表时查找缺失的行
- plsql - 如果我在 PL SQL 中编辑一个常量值会发生什么?
- ios - iOS 14 上的通用链接问题
- python - 在Python中迭代字典时如何获取剩余项目?
- xml - 元素类型“xsd:schema”必须由匹配的结束标记“</xsd:schema>”终止
- google-data-studio - 有什么方法可以在 Data Studio 的计算字段中进行数学运算?
- node-red - 在 Node-RED 中,如何更改函数节点中的缩进样式(空格而不是制表符)
- ios - 快速自动更正字符串(IOS)