Bash脚本 - 查找具有非零字节内容的目录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bash脚本 - 查找具有非零字节内容的目录相关的知识,希望对你有一定的参考价值。
我将如何使用Bash脚本在我的工作目录中找到至少包含非零字节文件的所有目录?这个 :
find . -maxdepth 1 -type d -size +1c | sort
似乎不起作用
不确定是否完全理解。如果我有./lvl1/lvl2/file(文件非空)并且lvl1只包含空文件和目录lvl2,那么输出中是否应该出现lvl1?
我以为你想要它。认为这工作:
find . -mindepth 2 -type f -size +0 | cut -d/ -f2 | uniq
查找工作目录的所有子目录中的内容,以查看其中是否存在非空文件。我们只看到感兴趣的关卡名称。 uniq,因为目录不太可能只包含1个非空文件。
编辑:减慢它的最大的事情可能是(没有做任何测试lol)在找到大小> 0的文件之后发现继续查找目录(我们应该能够停止查看这一点)。可以在每个子目录上调用find,然后在看到第一个匹配时找到exit。
for DIR in `find . -mindepth 1 -maxdepth 1 -type d`; do
find "$DIR" -type f -size +0 -print -quit
done | cut -d/ -f2
可以在这里放弃对uniq的调用(因为每个顶级目录只有1个结果)。我不认为做任何事情来摆脱削减将有很大帮助。
另一件事是你可能想要改变它看着常规文件,而不是看目录或其他东西(它会跳过一堆东西)。呃,而不是“-type f”考虑使用“!-type d”
即将入睡所以我完全有可能错过了一些东西/做了一些愚蠢的xD
这个怎么样:
find . -maxdepth 2 -type f -size +1c -exec dirname {} ; | sort | uniq
这更深入一层,寻找非空文件,然后获取它找到的任何内容的父目录,然后删除重复项。
我使用它,转换grep因为空目录显示为4.0K
du -h --max-depth=0 */ | grep -v 4.0K
编辑:没有max-depth
和使用summary
du -sh */ | grep -v 4.0K
请注意,如果您要包含点目录,请确保已设置
shopt -s dotglob
以上是关于Bash脚本 - 查找具有非零字节内容的目录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用脚本启动具有特定工作目录的 Git Bash 窗口?