2010-11-20 4 views
1

Я запускаю Ubuntu. У меня есть папка «Project», и в этой папке у меня есть куча подпапок. В каждой из подпапок у меня есть файл .c, файл .jar или .py-файл. Я хочу перебрать все файлы и для каждого файла, скомпилировать его и запустить 5 раз с разными вводами, используя команду «время», чтобы время выполнения.Компилировать и запускать код во вложенных папках

Я хочу создать сценарий оболочки для этого, но я не могу найти хороший способ рекурсии над всеми файлами в подпапках.

+0

Как насчет сделать? – khachik

ответ

-1

Если все подпапки имеют одинаковую глубину, вы можете использовать for i in ./*/*/*/*.py с соответствующим количеством *. Используйте один цикл для каждого формата, так как действия будут разными.

+0

Если я пытаюсь для г в ./*.py сделать \t эхо «$ я» сделал я получаю выход ./*.py – utdiscant

+0

я пропустил уровень так, используя ./*/*.py починил это :) – 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 вы можете установить globstar в рекурсию все подкаталоги, не заботясь о глубине

#!/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 
Смежные вопросы