2017-10-07 1 views
1

私はこのディレクトリを持っています。どのように再帰的にすべてのフォルダに移動し、同じ名前のシェルスクリプトを実行できますか?

. 
├── animation 
│   ├── animation-events 
│   │   ├── app.js 
│   │   ├── app.mustache.json 
│   │   ├── create_view.sh 
│   │   └── assets 
│   │    └── dummy_character_sprite.png 
│   └── change-frame 
│    ├── app.js 
│    ├── app.mustache.json 
│      ├── create_view.sh 
│    └── assets 
│     └── dummy_character_sprite.png 
├── app.css 
├── app.mustache 
├── bunch_of_functions.js 
├── decorators.js 
├── create_all_views.sh 
└── displaying-a-static-image 
    ├── app.js 
    ├── app.mustache.json 
    ├── create_view.sh 
    └── assets 
     └── piplup.png 

create_all_views.shは、子供のディレクトリ内のすべてのcreate_view.shを実行するために私がしたいです。どうすればこのようなことができますか?

答えて

4

あなたがUbuntuのであるとして、あなたは、-execdirオプションがありfindのGNUの実装、 を持っ 、あなたはこのように行うことができます。

find path/to/dir -name create_view.sh -execdir ./create_view.sh \; 

、それが見つかった各create_view.shファイルの ですディレクトリツリーで を実行すると、そのファイルのディレクトリに./create_view.shが実行されます。

+0

素晴らしいですが、 '\;'は何のために使われますか? – notalentgeek

+0

'\;'は '-execdir'への引数の終わりを示すために使われます。例えば ​​'find path/to/dir -name create_view.sh -execdir ./create_view.sh 'のように、後にもっと多くのオプションがあります。 -print -ls' – janos

+0

複数のコマンドを実行するにはどうすればよいですか?私は 'find $(dirname $ 0)-name create_view.sh -execdir chmod + x ./create_view.sh \ ./create_view.sh \;'を持っていますが、 'chmod + x'に' No such file or directory'を返します。 。 – notalentgeek

関連する問題