2012-07-17 4 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

+0

파일 배열은 항상 비어있는 것 같습니다. 제대로 배열을 만들지 못하기 때문에 또는 하위 디렉토리를 통과하지 않아서 배열인지 알 수 없습니다. –

+0

당신의 스크립트는 괜찮아 보입니다 ... 아마도'-type f' 옵션을'find'에 놓을 수도 있지만 그렇지 않으면 작동 할 것으로 기대합니다. – trojanfoe

답변

-1

쉘이 * 이스케이프 할 필요가 없습니다 제안, (유사한 역 인용 부호 구문과 달리) 특수로 괄호 안의 어떤 문자를 취급하지 않습니다 $(...)를 사용하여. find 명령은 말 그대로 문자 그대로 \*입니다. 백 슬래시를 제거하십시오.

+0

방금 ​​백 슬래시를 사용하지 않고 제대로 작동하는 스크립트를 작성했습니다. '\ *'는 필요하지 않으며,'*'는 충분하다 ('$ (...)'안에). –

+0

필자는 backquotes와 '$ (...)'사이의 문서화 된 차이점을 완전히 이해하지는 못하지만 역 슬래시 '$', '\''및 '\'가 처리되는 방식에 대해서는 역 슬래시 '*' . 차이점을 어떻게 처리하는지 보려면'a = 5'를 설정 한 다음'echo $ (echo $ a)','echo $ (echo \ $ a)','echo \'echo $ a \'' ,'echo \'echo \ $ a \''와 같이 사용한다. – chepner

관련 문제