bash – 列出所有不包含子目录的目录
发布时间:2020-12-15 21:09:31 所属栏目:安全 来源:网络整理
导读:我有一个问题的解决方案 find . -type d -exec sh -c 'test $(find "$0" -maxdepth 1 -type d | wc -l) -eq 1' {} ; -print 我想知道,是否有更好(更快)的方法来做到这一点.我真的不喜欢在’找到’另一个查找过程中开始. 解决方法 随着命令的更多编码也应该
我有一个问题的解决方案
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解决方案,如问题所示. 性能测试: 我在一个包含15k嵌套子目录的目录上运行它,发现这个awk命令比OP的查找快得多(快250-300%) wc命令. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |