2012-07-17 286 views
0

我遇到了一些問題。我試圖編寫一個腳本,查找給定目錄中給定類型(php)的所有文件。如果找不到它,它會遍歷父目錄中的所有子目錄。如果發現它,它會執行給定的操作並中斷。Bash腳本在給定文件夾中查找文件類型

這是我到目前爲止有:

function findPHP(){ 
    declare -a FILES 
    FILES=$(find ./ -type f -name \*.php) 
    for f in $FILES 
    do 
    echo "Processing $f file..." 
    # take action on each file. 
    done 
} 

任何想法?

+0

你有什麼問題? – trojanfoe 2012-07-17 09:48:45

+0

文件數組似乎總是空的。我不知道是不是因爲我沒有正確創建數組或者是因爲它沒有經過子目錄。 – 2012-07-17 09:54:49

+0

你的腳本對我來說看起來不錯......也許把'-type f'選項放到'find',但否則我會期待它的工作。 – trojanfoe 2012-07-17 09:56:19

回答

-1

當使用$(...) shell不把括號內的任何字符特殊(不像類似的反引號語法),這表明*並不需要進行轉義。 find命令可能字面上看到\*。嘗試刪除反斜槓。

+0

我剛剛寫了一個腳本,我沒有使用反斜槓,它工作得很好。不需要'\ *','*'就足夠了(在$(...)'內部)。 – 2012-07-23 02:32:04

+0

我並不完全理解backquotes和'$(...)'之間的記錄差異,但它表示'$','\''和'\'是如何處理的,而不是反斜槓'*' 。要查看差異是如何處理的,可以嘗試設置'a = 5',然後使用'echo $(echo $ a)','echo $(echo \ $ a)','echo \'echo $ a'''和'echo''echo \ $ a \''。 – chepner 2012-07-23 02:41:35

相關問題