语法:
./count.sh <folder> <depth>脚本将从<folder>开始(递归地)搜索直到<depth>级别的深度,并计算该文件夹中存在多少常规文件和多少目录。示例:如果<folder>为/,<depth>为2,程序将遍历文件夹/a/b/*,但不会解析/a/b的子文件夹(例如,不会解析/a/b/c/ )。
#!/bin/sh
a=`find "$1" -maxdepth $(($2+1)) -type f | wc -l`
b=`find "$1" -maxdepth $(($2+1)) -type d | wc -l`
b=$(($b-1))
echo files $a folders $b这样可以吗?
发布于 2017-02-17 10:50:58
为此,您可能不需要脚本。
要计算文件数,请执行以下操作:
find <folder> -mindepth 1 -maxdepth <depth> -type f | wc -l要计算目录数,请执行以下操作:
find <folder> -mindepth 1 -maxdepth <depth> -type d | wc -l注意这是如何将您的问题分解为两个步骤的:查找您感兴趣的所有文件/目录,并将结果通过管道传输到只计算行数的wc -l。
请注意,此方法在大多数情况下都有效,但如果文件或目录的名称中有换行符,则会产生错误的结果(您不会经常看到这种情况,但在技术上是可能的)。如果这是一个问题,您可以使用类似以下内容:
declare -i i=0
while IFS= read -d '' file
do
i+=1
done < <(find <folder> -mindepth 1 -maxdepth <depth> -type f -print0)
echo "$i"它使用零字节作为分隔符(不能出现在文件名中),使用-print0选项和read的-d ''选项来使用零字节作为记录分隔符。
https://stackoverflow.com/questions/42288474
复制相似问题