2010-04-23 120 views
1

我試圖用shell腳本分析一個目錄內的文件/目錄,例如,如果該文件是可讀的,如果它是一個文件,如果它是一個目錄,等等我的腳本設置爲將目錄作爲輸入。所以我會輸入'file.sh directoryname'。但是,當我創建for循環來分析這些文件時,它會分析我當前工作目錄中的文件而不是指定的目錄名稱。讀入目錄,unix shell腳本

這是我斷碼:

file=$1 
set mypath = $file 
for file in $mypath * 
do 

if [ -d $file ] 
    dirCount=`expr $dirCount + 1` 
fi 

done 

爲什麼這個閱讀的工作目錄,而不是指定的目錄? 任何幫助表示讚賞。由於

+0

或者,你總是可以做到這一點:找到目錄名稱型的F -maxdepth 1 – Jon 2010-04-24 00:15:43

+0

下降的遞歸計數-maxdepth 1 – Jon 2010-04-24 00:16:26

回答

1

我覺得你這裏有一個錯誤:

set mypath = $file 

只是做

mypath = $file 

,並應制定得很好。

1
# check this one  
file=$1 
mypath=$file 
dirCount=0 
#ls $file 
for file in `ls $mypath` 
do 
file=./$mypath/$file 
#a=`ls -l $file` 
echo $a 
if [ -d $file ] 
then 
    dirCount=`expr $dirCount + 1` #increment count 
     echo $dirCount 
fi 
done 

#if count value is grater than 1 then only print value 
if [ $dirCount -ne 0 ] 
then 
echo -e "\ncount is $dirCount $$" 
fi 
0

你可以試試這個。但是當文件夾名稱有空格時,腳本將會出現問題。

#/bin/bash 
path=$1 
for file in $path/* 
do 
if [ -d $file ];then 
    dirCount=`expr $dirCount + 1` 
fi 
done 
echo $dirCount