首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >bash脚本计算文件夹中有多少常规文件和多少目录

bash脚本计算文件夹中有多少常规文件和多少目录
EN

Stack Overflow用户
提问于 2017-02-17 10:43:30
回答 1查看 976关注 0票数 0

语法:

代码语言:javascript
复制
./count.sh <folder> <depth>

脚本将从<folder>开始(递归地)搜索直到<depth>级别的深度,并计算该文件夹中存在多少常规文件和多少目录。示例:如果<folder>/<depth>为2,程序将遍历文件夹/a/b/*,但不会解析/a/b的子文件夹(例如,不会解析/a/b/c/ )。

代码语言:javascript
复制
#!/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

这样可以吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-17 10:50:58

为此,您可能不需要脚本。

要计算文件数,请执行以下操作:

代码语言:javascript
复制
find <folder> -mindepth 1 -maxdepth <depth> -type f | wc -l

要计算目录数,请执行以下操作:

代码语言:javascript
复制
find <folder> -mindepth 1 -maxdepth <depth> -type d | wc -l

注意这是如何将您的问题分解为两个步骤的:查找您感兴趣的所有文件/目录,并将结果通过管道传输到只计算行数的wc -l

请注意,此方法在大多数情况下都有效,但如果文件或目录的名称中有换行符,则会产生错误的结果(您不会经常看到这种情况,但在技术上是可能的)。如果这是一个问题,您可以使用类似以下内容:

代码语言:javascript
复制
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 ''选项来使用零字节作为记录分隔符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42288474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档