我正在运行Ubuntu。我有一个文件夹“Project”,在该文件夹中我有一堆子文件夹。在每个子文件夹中,我有.c文件,.jar文件或.py文件。我想迭代所有文件,并为每个文件编译它,并使用“time”命令运行5次不同的输入,以计算执行时间。
我想为此创建一个shell脚本,但我似乎无法找到一个很好的方法来递归子文件夹中的所有文件。
答案 0 :(得分: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
答案 1 :(得分:-1)
如果所有子文件夹都具有相同的深度,则可以使用for i in ./*/*/*/*.py
并使用适当数量的*。为每种格式使用一个循环,因为不管怎样,操作都会有所不同。
答案 2 :(得分:-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