【发布时间】:2015-04-03 14:28:28
【问题描述】:
我有一个包含大量文件的文件夹,我想对其中的一些文件执行操作。我有文件“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
【问题讨论】:
-
那个循环不起作用怎么办? (通常也避免使用
ALL_CAPS变量名,因为它们是为外壳“保留”的。) -
对于初学者,您可以将
$i留在双引号内 -
解决这个问题的最佳方法是让
runex程序在正确的位置以正确的名称创建输出文件。如果它在您的控制之下,请修复它。如果不是,请说出来。mpiexec -n 40命令是否在同一个文件上运行程序的 40 个副本?
标签: string shell for-loop filenames