2013-06-05 68 views
0

从父文件夹向下面的所有目录运行qsub命令我正在使用Redhat和pbs排队系统将作业提交给有限元素分析代码。我通常有一个包含.dat文件的文件夹,这是我想要运行的,以及一个.pbs文件,它将提交.dat文件。要提交.dat文件,我会在包含这两个文件的目录中运行命令“qsub * .pbs”。使用文件* .dat

我该如何提交或仅从包含.dat文件的目录之外运行“qsub * .pbs”。我通常会将两个目录从.dat文件中提取出来。

感谢

回答

1

你可以做一个查找和exec

find /tmp/foo -name "*.pbs" -exec qsub {} \;

这里是一个测试,我跑

[[email protected] tmp]$ mkdir /tmp/torqueFun 
[[email protected] tmp]$ cd !$ 
[[email protected] torqueFun]$ touch foo.pbs 
[[email protected] torqueFun]$ touch bar.pbs 
[[email protected] torqueFun]$ touch foobar.pbs 

[[email protected] torqueFun]$ find . -name "*.pbs" -exec qsub {} \; 
19185.moab.novalocal 
19186.moab.novalocal 
19187.moab.novalocal 
+0

实际上,我怎么在各自的目录中运行PBS文件而不是在这个命令执行的目录中? –

+0

命令'find .'将搜索当前目录。你可以像这样搜索任何文件夹:'find/some/directory'。 – spuder

+0

我想你是误解我的问题。如果我说去父文件夹并执行你写的命令。然后,就像我想要的,它进入每个子目录并执行每个PBS文件。但是,pbs文件会在父目录中执行,而不是在子目录中执行。我所有的子目录都有不同的名字。我不知道如何通过编辑您发送的命令或编辑我的pbs文件来弥补这一点。注意我有20个子目录,每个都有不同的pbs文件。 –