shell脚本:for循环文件列表

时间:2015-04-03 14:28:29

标签: string shell for-loop filenames

我有一个包含大量文件的文件夹,我想对某些文件执行操作。我有文件" BlaBla_01.mat"," BlaBla_02.mat"最高为" BlaBla_11.mat"

{ time mpiexec -n 40 ./runex @alg.param BlaBla_01.mat; } 

- >这会生成2个输出文件。我需要重命名并移动它们......

mv FirstOut.log My/Folder/Results/FirstOut_BlaBla_01.log
mv NextOut.log My/Folder/Results/NextOut_BlaBla_01.log

如何在for循环中进行此操作以便按原样处理和重命名文件?

我试过了:

NUMS='01 02 03 04 05 06 07 08 09 10 11'
for i in $NUMS;
do
FILENAME="BlaBla_"$i".mat"
{ time mpiexec -n 40 ./runex @alg.param $FILENAME; }
mv FirstOut.log "My/Folder/Results/FirstOut_BlaBla_"$i".log"
mv NextOut.log "My/Folder/Results/NextOut_BlaBla_"$i".log"
done;

及其中的许多变体,但它不起作用。

我很抱歉这一定是一个非常简单的问题,但我不是程序员所以这是我在shell脚本上的第一周

提前谢谢你,

周末愉快

的Seb

2 个答案:

答案 0 :(得分:0)

试试这个:

NUMS='01 02 03 04 05 06 07 08 09 10 11'
for i in ${NUMS[@]};
do
FILENAME="BlaBla_"$i".mat"
{ time mpiexec -n 40 ./runex @alg.param $FILENAME; }
mv FirstOut.log "My/Folder/Results/FirstOut_BlaBla_"$i".log"
mv NextOut.log "My/Folder/Results/NextOut_BlaBla_"$i".log"
done;

答案 1 :(得分:0)

我会把它写成

for root in BlaBla_{01..11}; do
    time mpiexec -n 40 ./runex @alg.param "$root.mat"
    mv FirstOut.log "My/Folder/Results/FirstOut_$root.log"
    mv NextOut.log "My/Folder/Results/NextOut_$root.log"
done;

需要使用bash进行大括号扩展