gpt4 book ai didi

linux - 计算所有文件和文件夹,包括隐藏在 bash 中的文件和文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:36 27 4
gpt4 key购买 nike

我有一个像这样的程序(函数)

countf()
{
for f in "$1"/* "$1"/.[!.]*; do
if [ -d "$f" ];
then
folders=$(($folders + 1))
countf "$f"
else
files=$(($files + 1))
fi
done
}

当文件夹至少包含 1 个隐藏文件时,它会给出正确的值。但是,它假定“$1/.[!.]*”为一个文件,并在没有隐藏文件时对其进行计数。

这是我解决这个问题的方法

countf()
{
for f in "$1"/* "$1"/.[!.]*; do
if [ -d "$f" ];
then
folders=$(($folders + 1))
countf "$f"
else
# added if else
if [ "$f" != "$1/.[!.]*" ]; then files=$(($files + 1)); fi
fi
done
}

我无法使用查找。

最佳答案

如果没有隐藏文件,则该模式将按字面意思处理,并且由于它不是目录,因此您假设它是一个文件。只需验证 $f 是一个文件,就像在增加文件计数之前检查它是否是一个目录一样。

countf()
{
for f in "$1"/* "$1"/.[!.]*; do
if [ -d "$f" ];
then
folders=$(($folders + 1))
countf "$f"
elif [ -f "$f" ]
then
files=$(($files + 1))
fi
done
}

关于linux - 计算所有文件和文件夹,包括隐藏在 bash 中的文件和文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293326/

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