在所有子目录

时间:2018-02-02 13:27:40

标签: linux grep find qsub

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

qsub run_calc

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

我在此处发现了类似的问题SolutionSolution2 这似乎是对这个问题的部分答案。我没有信心只提交脚本,直到找到解决方案,这就是我要问的原因:

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

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?

提前谢谢

2 个答案:

答案 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的效果不会“泄露”。