2010-11-20 5 views
1

나는 우분투를 사용 중이다. 나는 "Project"라는 폴더를 가지고 있으며, 그 폴더에는 여러 개의 하위 폴더가 있습니다. 각 하위 폴더에는 .c 파일, .jar 파일 또는 .py 파일이 있습니다. 모든 파일을 반복하고 각 파일에 대해 컴파일하고 실행 시간을 측정하기 위해 "time"명령을 사용하여 다른 입력으로 5 번 실행하려고합니다.중첩 폴더에서 코드 컴파일 및 실행

이 경우 셸 스크립트를 만들고 싶지만 하위 폴더의 모든 파일에 대해 재귀를 수행하는 좋은 방법을 찾지 못하는 것 같습니다.

+0

에 대해 걱정하지 않고 모든 하위 디렉토리를 재귀하는 globstar을 설정할 수 있습니다를 사용하는 경우? 내가 ./*.py 에 난에 대한 을하려고하면 – khachik

답변

-1

모든 하위 폴더가 동일한 깊이 인 경우 for i in ./*/*/*/*.py에 적절한 숫자 *를 사용할 수 있습니다. 액션은 어쨌든 다르기 때문에 각 형식에 대해 하나의 루프를 사용하십시오. 같은

+0

"$ 내가" 가 가 나는 수준을 놓친 – utdiscant

+0

./*.py 출력이 너무 ./*/*.py 사용하여 얻을 수행 \t 반향을 고쳤다 :) – utdiscant

-2

뭔가 :

for folder in * 
do 
    if [ -d $folder] then 
    cd $folder 
    for file in *.py 
    do 
     if [ -f $file ] then 
     do your stuff .. 
     fi 
    done 
    for file in *.c 
    do 
     if [ -f $file ] then 
     fi 
    done 
    ....... 
    cd .. 
    fi 
done 
0

당신이 Bash4 당신이 깊이에 대해 어떻게

#!/bin/bash 

shopt -s globstar 

for file in /path/to/your/files/**; do 

case "${file##.*}" in 
c) 
    gcc -c "$file" 
    ;; 
jar) 
    java -jar "$file" 
    ;; 
py) 
    python "$file" 
    ;; 
esac 
done