我在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
是"我"是一个名称为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文件的文件夹,还包括subsubdirectries?
提前谢谢
答案 0 :(得分:1)
假设您使用alos = driver.find_elements(By.XPATH, "//div[@class='txt-block']/span/a/span")
for alo in alos:
print alo.text
作为shell:
bash
$ 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')
查找当前目录及其子目录中文件find . -type f -name 'run_calc'
的所有路径。这是run_calc
的输入。
while loop
具体为pushd, popd
,并添加或弹出目录堆栈。
答案 1 :(得分:0)
func getFBUserData(){
if((FBSDKAccessToken.current()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, email"]).start(completionHandler: { (connection, result, error) -> Void in
if (error == nil){
self.userData = result as! [String : AnyObject]
print(result!)
print(self.userData)
self.performSegue(withIdentifier: "SearchVC", sender: self)
}
})
}
}
}
for d in `find . -type d`
do ( cd "$d"
if test ! -f run_calc; then continue; fi
qsub run_calc
) done
在单独的流程中执行( commnds )
,commands
的效果不会“泄露”。