如何在bash中以递归方式为具有特定扩展名的文件运行命令?

时间:2017-05-20 16:04:12

标签: bash

我想以递归方式从根文件夹运行命令,这会影响该根文件夹下具有特定扩展名的所有文件。

这是命令

blender b03.blend --background --python myScript.py

我想为每个扩展名为.blend的文件运行此命令,而不是b03.blend文件。

1 个答案:

答案 0 :(得分:2)

尝试:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class jump : MonoBehaviour {
    private Rigidbody rb;
    private float initialPos = 0.5f ;
    // Use this for initialization
    void Start () {
        rb = GetComponent<Rigidbody>();

    }

    // Update is called once per frame
    void Update () {


        //Debug.Log(rb.velocity.magnitude);


        if (Input.GetKeyDown(KeyCode.Space))
        {


            rb.velocity = new Vector3(0f , 1f , 0f) * 10 ;
            Debug.Log(rb.velocity);
        }



        if (rb.velocity.y > 0  && !Input.GetKey(KeyCode.Space))
        {
            float dis = rb.transform.position.y - initialPos;
            Debug.Log(dis);

            rb.velocity += new Vector3(0f, 1f, 0f) * Physics.gravity.y;

            //Debug.Log(rb.velocity);
            //Debug.Log("I am here");
            //rb.velocity = Vector3.zero;
        }

    }

    private void OnCollisionEnter(Collision collision)
    {

        rb.velocity = Vector3.zero;
        Debug.Log(rb.velocity);
        Debug.Log("...........................Collision " + gameObject.name);


    }
}

说明:

  • find . -name '*.blend' -exec blender {} --background --python myScript.py \; 任何与find匹配的文件 - 使用单引号非常重要,这样您的shell就不会为当前目录中的任何文件展开它
  • 然后对于找到的每个文件,执行*.blendblender {} --background --python myScript.py将替换为文件名,例如{}
  • some/sub/tree/file.blend将终止\;语句。 -exec用于转义\,因此shell不会吸收它并将该行拆分为多个命令。
  • ;的所有实例都将从初始工作目录运行,因此blender必须能够正确处理不在“此处”的文件,并且同等地访问blender这不是myScript.py文件的邻居。

注意:我不熟悉*.blend,但是如果它会进入后台并花一些时间来处理(由于blend),那么你可能会压倒你的机器......你可能更喜欢一次处理一个文件,或者可能将工作分成几个可以连续运行的独立工作(每个项目完成)......奖励积分看起来像{ {1}}可以在处理限制时轻松运行并发操作(例如:--background一次最多可运行make个命令。)