2017-01-09 42 views
-1

我最初的代碼爲:如何在沒有'find'命令的情況下循環瀏覽bash中的目錄(包括隱藏)?

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 
} 

謝謝

+0

出於好奇,使用find命令有什麼問題? –

+0

你使用的是什麼版本的'bash'?如果'bash' 4,使用'globstar'選項變得更容易:'用於**/*中的f;例如,do'在當前目錄下遞歸地打擊每個文件。 – chepner

+1

請看看:[我應該怎麼做當有人回答我的問題?](http://stackoverflow.com/help/someone-answers) – Cyrus

回答

1

使用bash我建議使用:

shopt -s dotglob 

man bash

dotglob:如果集,bash包含以。開頭的文件名一個'。'在路徑名擴展的結果中。

相關問題