2016-11-13 9 views
-1

私がディレクトリdir1にいるとします。そのディレクトリには、myscript.shとディレクトリsubdir1があります。 subdir1には、複数のサブサブディレクトリsubsub1、subsub2、subsub3があります。これらのサブサブディレクトリのそれぞれには、script2.shという名前のbashスクリプトがあり、それぞれを実行したいと思います。bashスクリプトでサブディレクトリをループする方法は?

まず、すべてのサブサブディレクトリを印刷できるようにしたいと思います。 私が持っている:

for dir in /subdir1/*/ ; do 
     echo $dir 
    done 

誰も私が間違ってやっているものを私に伝えることができますか?

+0

あなたは男のbash' 'したいと「globstar」と同様に、'男find'を検索することがあります。また、[MCVE](http://stackoverflow.com/help/mcve)の作成についても読んでください。この質問のためにこれを行うには、スクリプトの抜粋が失敗したテスト環境を生成するために使用したコマンドを含めることが重要です。現状では、コードをデバッグするのに十分ではありません。 – ghoti

答えて

0

名前にスペースやその他の特殊文字が含まれているディレクトリがある場合は、問題が発生します。あなたは

for scriptfile in ./subdir/*/*script2.sh 
do 
/bin/sh $scriptfile 
done 

を提供するものに基づいて

はあなたのための最適な動作をします。

ディレクトリ名のスペースやその他の特殊文字を扱うには、findを使用してxargsへの出力を渡したいと思うでしょう。

+0

これは私にそのようなファイルまたはディレクトリメッセージを与えません。 –

+0

@HanBrolo - あなたが持っている問題を示す反復可能な例を提供する必要があります。この回答はうまくいく可能性があり、そうでない場合は、あなたが私たちに語っていないことが原因です。 – ghoti

1

私はあなたが彼らにこの方法を実行することができると思います:

find subdir1 -type f -name "NAME_OF_YOUR_SCRIPT.sh" -exec {} \;