Компилировать и запускать код во вложенных папках - PullRequest
1 голос
/ 20 ноября 2010

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

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

Ответы [ 3 ]

0 голосов
/ 20 ноября 2010

Что-то вроде:

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 голосов
/ 20 ноября 2010

Если вы используете 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
0 голосов
/ 20 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...