我有这个起始码,但我不知道从哪里开始。现在我使用路径〜/ Desktop,但它没有读取桌面目录。并且回显0表示目录和文件的数量。
#!/bin/sh
path="$1"
num_file=0
num_dir=0
for item in $path; do
if [ -d ]
then
num_dir+=1
elif [ -f ]
then
num_file+=1
fi
done
echo "The number of directories is $num_dir"
echo "The number of files is $num_file"
答案 0 :(得分:1)
path="$1"
dirs=$(find "$path" -mindepth 1 -type d -printf "d");
fils=$(find "$path" -mindepth 1 -type f -printf "f");
echo "dirs: ${#dirs} files: ${#fils}"
打印变量的大小,仅收集字符“d”或“f”。
要避免访问子目录,请将-maxdepth 1
添加到find命令。
在您的代码中,我看到了多个问题:
for item in $path; do
for item in "$path"/* ; do
您必须使用*来获取项目列表。
if [ -d ]
if [ -d "$item" ]
如果-d是什么?好吧,这个项目。
num_dir+=1
((num_dir+=1))
双圆形做算术。在巴什 - 至少。也许你做过的一些关于'sh-Shell'的事情,但我对此表示怀疑。