本站教程收集整理的这篇文章主要介绍了bash – 列出所有不包含子目录的目录,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题的解决方案
find . -type d -exec sh -c 'test $(find "$0" -maxdepth 1 -type d | wc -l) -eq 1' {} \; -print
我想知道,是否有更好(更快)的方法来做到这一点.我真的不喜欢在’找到’另一个查找过程中开始.
解决方法
随着命令的更多编码也应该工作:
find . -type d|awk 'NR>1{a[c++]=$0; t=t $0 SUBSEP} END{for (i in a) {if (index(t,a[i] "/") > 0) delete a[i]} for (i in a) print a[i]}'
使其更具可读性:
find . -type d | awk 'NR > 1 { a[c++]=$0; t=t $0 SUBSEP } END { for (i in a) { if (index(t,a[i] "/") > 0) delete a[i]} for (i in a) print a[i] }'
虽然在这个解决方案中可能看起来更像编码,但在一个大目录中,这个基于awk的命令应该比嵌入式查找运行得快得多wc解决方案,如问题所示.
性能测试:
我在一个@R_249_11262@5k嵌套子目录的目录上运行它,发现这个awk命令比OP的查找快得多(快250-300%) wc命令.
美国高防vps
本站总结
以上是本站教程为你收集整理的bash – 列出所有不包含子目录的目录全部内容,希望文章能够帮你解决bash – 列出所有不包含子目录的目录所遇到的程序开发问题。
如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。