如何在没有'find'命令的情况下在bash中遍历目录(包括隐藏)?

时间:2017-01-09 18:57:03

标签: bash shell loops scripting

我的初始代码是:

function recurse {
 for i in "$1"/*;do
    echo "$i"
    if [ -d "$i" ];then
      #echo $i
        count $i
        recurse "$i"
    fi
 done
}

但后来我意识到这不会循环隐藏目录。我想要做的是制作一个脚本,它将计算给定目录中的所有文件和目录(包括隐藏)。我这样做的功能是:

function count {
  varname=($1/*)
  for varname2 in ${varname[@]}  # For each element
    do
        if [ -d $varname2 ] # Checks if directory
        then
                Directories=$(expr $Directories + 1)
        elif [ -f $varname2 ] # Checks if file
        then 
                Files=$(expr $Files + 1)
    fi
    done

  for a in $(ls -FA $1 | egrep '^[.].*[/]$') # Checks for hidden dirs
  do
   HiddenDirectories=$(expr $HiddenDirectories + 1)
  done

  for a in $(ls -FA $1 | egrep '^[.].*[^/]$') # Checks for hidden files
  do
   HiddenFiles=$(expr $HiddenFiles + 1)
  done
}

谢谢

1 个答案:

答案 0 :(得分:1)

使用bash我建议使用:

shopt -s dotglob

来自man bash

  

dotglob:如果设置,bash包含以`。'开头的文件名。在路径名扩展的结果中。