gpt4 book ai didi

linux - 变量以在 for 循环中保持运行计数并在最后打印总计

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:09 24 4
gpt4 key购买 nike

我是脚本编写新手,我正在尝试编写一个脚本来计算当前目录的每个文件夹(和子文件夹)中的文件数量。

这个脚本似乎运行正常:

for dir in $( ls -pa | grep / | tail -n +3 ); do 
echo "${dir%/}: $( find ${dir} -type f | wc -l )"
done

但是,我想在 for 循环之后打印文件总数,而不会低效地使用 find 命令来计算总数。

我尝试了一些方法但没有成功。

for dir in $( ls -pa | grep / | tail -n +3 ); do 
echo "${dir%/}: `count=`$( find ${dir} -type f | wc -l )"
total=$((total+count))
done

echo "total: $total"

不确定我的命令替换是否正确,并且希望有人指出我正确的方向!谢谢

最佳答案

计算当前文件夹中每个直接子文件夹(不包含任何文件)中的文件数量(具有递归性),并使用 find . -type f | wc -l 计算文件总数而不重新计数所有文件。做:

#!/usr/bin/env bash

total=0
for dir in $(find . -maxdepth 1 -type d -printf '%f\n' | sed 1d); do
echo "${dir}/: $(find ${dir} -type f | wc -l)"
total=$((total + count))
done

echo "total: ${total}"

关于linux - 变量以在 for 循环中保持运行计数并在最后打印总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44736416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com