linux 计算bash中脚本文件的数量[已关闭]

fsi0uk1n  于 2023-05-16  发布在  Linux
关注(0)|答案(1)|浏览(165)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

昨天关门了。
Improve this question
我被要求编写一个脚本,它接收一个路径作为参数,并打印以该路径为根的目录中的文件总数。我不得不遵循给定的条件:
1.如果没有为脚本提供参数或提供了多个参数-退出,状态码为1
1.如果单个参数不包含指向可读目录或文件的路径-退出,状态码为2
1.如果给定的路径是一个可读的文件(不是目录),脚本应该打印1。
1.如果路径是一个可读目录,那么numoffiles =该目录中可读文件的数量+任何可读子目录(递归)
1.我必须使用num-files.sh,它是一个脚本,它访问一个名为dir的bash变量,该变量保存一个目录的路径,并打印该目录中所有用户都具有读访问权的文件数量,还必须使用bash脚本list-dirs.sh,它将目录路径作为输入参数,并打印该目录中所有用户都具有读访问权的子目录列表

#!/bin/bash
if [ $# -ne 1 ]; then
   echo "Usage: $0 <path>"
   exit 1
fi
if [ ! -e $1 ]; then
   echo "No such path $1"
   exit 2
fi

# Check if the path is a readable regular file
if [ -f "$path" ] && [ -r "$path" ]; then
  echo 1
  exit 0
fi

dir="$1"
# Using the Script list-dirs will get the list of directories
dirList=`./list-dirs.sh $dir`

# create  counter 
count=`source num-files.sh`
# Iterate over the directories and recursively count the number of readable files
for file in $dirList; do
  # Call the script recursively if the directory is readable
  if [ -d file ]; then
     subcount=`source ./ count-files.sh file`
    count=$((count + subcount))
  fi
done

# Get the number of readable files in the current directory using num-files.sh

echo $count
exit 0

该脚本通常工作,并实际打印一些东西,但它不计数的文件数正确的一些原因,我不明白为什么

jqjz2hbq

jqjz2hbq1#

这是上述脚本的替代方案

#!/bin/bash
source $HOME/num-files.sh
source $HOME/count-files.sh

if [ -d "$dir" ] && [ -r "$dir" ];
then
        echo "Num of files = $(find "$dir" -type f -user $(whoami) -perm -u+r 2>/dev/null | wc | awk '{print $1}')"

elif [ -f "$dir" ];
then
        echo "1"
else
        exit 2
fi

echo "Number of readable subdirectories"
echo "$(find "$subdir" -mindepth 1 -type d -user $(whoami) -perm -u+r 2>/dev/null | wc -l)"

相关问题