2013-02-12 342 views
-1

我的代碼是:僅在bash腳本中檢查可執行文件時計算文件夾和可執行文件?

function CountEx() 
{ 

    echo "The number of executable files in this dir is: $count" 
} 
while 

我使用這樣的:

yaser.sh -x ./folder 

的輸出The number of files + folders

+0

我是否正確地告訴你,你想只使用shell腳本在目錄中查找可執行文件?你爲什麼不想用'find'? – nemo 2013-02-12 14:34:10

+0

在'bash'中,有幾種方法可以在不使用外部程序'expr'的情況下遞增一個值;最簡潔的是'((count + = 1))'。與你現有的代碼最相似的是'count = $((count + 1))'。 – chepner 2013-02-12 14:37:42

回答

3

文件夾上的可執行文件位具有特殊含義,最常設置。嘗試篩選具有可執行位的常規文件:

if [[ -f "$file" -a -x "$file" ]]; 

當然,整個演習可能被find被簡化:

find $folder -maxdepth 1 -type f -executable -ls | wc -l 
+0

我不認爲'find'的所有版本都有'-executable'標誌。你可以使用'-perm + 111'作爲替代。 – 2013-02-12 14:39:13

+0

非常感謝這個最有用的:) – 2013-02-12 17:56:37

0

可能在你的目錄中的所有文件都設置爲可執行權限。如果你只想檢查elf文件,那麼使用file命令和grep for elf。

file $file | grep elf > /dev/null 
if [ $? -eq. 0 ] ; then 
    count = `expr $count + 1` 
fi