查找目录

问题描述

我一直在尝试计算某个目录中的所有空文件夹。子目录除外。我使用了下面的代码,但我不知道如何定义空文件夹或包含文件文件夹。

echo "$(ls -l | egrep -l $1/* | wc -l)"

$1 将是命令行中的用户参数。示例:./script.sh ~/Desktop/backups/march2021。

编辑 - 我不允许使用 find 命令

编辑 2 - ls -l * | awk '/total 0/{print last}{last=$0}' | wc -l 此脚本有效但会列出所有文件夹,即使目录包含文件和数据或目录为空。

解决方法

您不应解析 ls(带有换行符的目录或文件名),因此此解决方案仅适用于赋值:

ls -d */ */* | cut -d/ -f1 | sort | uniq -u | wc -l

说明:
ls -d */ 显示所有目录。这与 ls -d */* 结合使用,后者也将显示目录中的内容。
结果输出将显示所有目录。
空目录只会显示一次,因此您需要查找唯一的行。
使用 cut 您只能看到目录的名称,而不是目录中的文件。
此处可以跳过 sortls 将提供排序输出。当您将解决方案更改为 find(下一个作业?)时,可能需要进行排序。
uniq 可以查找出现一次的行。标志 -u 删除所有重复的行,因此它将在输出中显示唯一的行。

,

这个怎么样:

grep -v "." *

我的意思是:“。”表示任何字符(我不确定语法是否正确),因此基本上您会查找每个甚至不包含任何字符的文件。