查找目录
find directories
我一直在尝试计算某个目录中的所有空文件夹。排除的子目录。我使用了下面的代码,但我不知道如何定义空文件夹或包含文件的文件夹。
echo "$(ls -l | egrep -l /* | wc -l)"
$1 将是命令行中的用户参数。示例:./script.sh ~/Desktop/backups/March2021.
编辑 - 我不允许使用查找命令
编辑 2 - ls -l * | awk '/total 0/{print last}{last=[=11=]}' | wc -l
此脚本有效但会列出所有文件夹,即使目录包含文件和数据或目录为空也是如此。
你不应该解析ls
(带换行符的目录或文件名),所以这个解决方案仅适用于赋值:
ls -d */ */* | cut -d/ -f1 | sort | uniq -u | wc -l
解释:
ls -d */
显示所有目录。这与 ls -d */*
相结合,后者也将显示目录中的内容。
结果输出将显示所有目录。
空目录只会显示一次,因此您要查找唯一行。
使用 cut
你只能看到目录的名称,而不是目录中的文件。
sort
可以在这里跳过,ls
将给出排序输出。当您将解决方案更改为 find
(下一个作业?)时,可能需要排序。
uniq
可以查找出现一次的行。标志 -u
删除所有重复的行,因此它将在输出中显示唯一的行。
这个怎么样:
grep -v "." *
我的意思是:“。”表示任何字符(我不确定语法是否正确),所以基本上你会查找甚至不包含任何字符的每个文件。
我一直在尝试计算某个目录中的所有空文件夹。排除的子目录。我使用了下面的代码,但我不知道如何定义空文件夹或包含文件的文件夹。
echo "$(ls -l | egrep -l /* | wc -l)"
$1 将是命令行中的用户参数。示例:./script.sh ~/Desktop/backups/March2021.
编辑 - 我不允许使用查找命令
编辑 2 - ls -l * | awk '/total 0/{print last}{last=[=11=]}' | wc -l
此脚本有效但会列出所有文件夹,即使目录包含文件和数据或目录为空也是如此。
你不应该解析ls
(带换行符的目录或文件名),所以这个解决方案仅适用于赋值:
ls -d */ */* | cut -d/ -f1 | sort | uniq -u | wc -l
解释:
ls -d */
显示所有目录。这与 ls -d */*
相结合,后者也将显示目录中的内容。
结果输出将显示所有目录。
空目录只会显示一次,因此您要查找唯一行。
使用 cut
你只能看到目录的名称,而不是目录中的文件。
sort
可以在这里跳过,ls
将给出排序输出。当您将解决方案更改为 find
(下一个作业?)时,可能需要排序。
uniq
可以查找出现一次的行。标志 -u
删除所有重复的行,因此它将在输出中显示唯一的行。
这个怎么样:
grep -v "." *
我的意思是:“。”表示任何字符(我不确定语法是否正确),所以基本上你会查找甚至不包含任何字符的每个文件。