gpt4 book ai didi

linux - 在所有子目录中运行 qsub 命令

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:18 25 4
gpt4 key购买 nike

我在 HPC 上使用 Centos 来运行我的代码。我通常有一个包含 run_calc 文件的文件夹,这是我想要运行的文件:

qsub run_calc

现在我想编写一个脚本“submit_all.sh”来提交当前目录中所有子文件夹中的所有 run_calc 文件,而不是从我运行 submit_all.sh 脚本的父文件夹中提交。

我在这里发现了类似的问题 Solution在这里 Solution2这似乎是对这个问题的部分回答。在找到解决方案之前,我没有信心只提交脚本,这就是我问的原因:

在第二个链接中我找到了这个解决方案:

for i in {1..1000}; do
cd "$i"
qsub submit.sh
cd ..
done

“i”是名称为 1-100 的文件夹列表。是否有可能以某种方式使用 find 创建所有子目录的列表并将其指向 for 循环?我将如何处理子目录?我是否可以更改 cd .. 语句,以便在这种情况下我总是直接返回到父文件夹?

我喜欢这里的解决方案:Solution

#!/bin/sh

for i in `find /var/www -type d -maxdepth 1 -mindepth 1`; do
cd $i
# do something here
done

但是我不明白这是怎么回事?是否可以将上述脚本更改为仅深入包含 run_calc 文件的文件夹并包含子子目录?

提前致谢

最佳答案

假设您使用 bash 作为您的 shell:

$ cat ./test.sh
#!/bin/bash

IFS=$'\n'
while read -r fname ;
do
pushd $(dirname "${fname}") > /dev/null
qsub run_calc
popd > /dev/null
done < <(find . -type f -name 'run_calc')

找到 . -type f -name 'run_calc' 查找当前目录及其子目录中文件 run_calc 的所有路径。这是 while 循环 的输入。

pushd、popd 是特定于 bash 的,可以添加到目录堆栈或从目录堆栈弹出。

关于linux - 在所有子目录中运行 qsub 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48583714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com