2

私が書いたbashコードをすべてのサブフォルダー(「呼び出された」場所)で実行したい。私が書いたコードは単に「all」という名前で、各フォルダーで個別に実行すると問題なく実行されます。

しかし、このコードで実行すると実行されません (実行されますが、ファイルが見つからないなどのエラーが発生します)。

for D in *;do   
    all
done

間違えました!!!コード「all」を実行するには、各フォルダーに入る必要があります。それ、どうやったら出来るの?

ありがとう!

4

3 に答える 3

0

使用できますfind

for D in `find . -type d`; do
   "$D"/all
done

これにより、すべてのサブフォルダーが再帰的に検索されます。また、シンボリック リンクをたどりません (これは、find の既定の動作です)。

パラメータで再帰の最大深度を指定できますmaaaxdepth

for D in `find . -type d -maxdepth 1`; do
   "$D"/all
done

これは、現在の pwd のサブフォルダーのみを取得します

将来の私による編集:それを使用しないでください!

より良い方法: グロビング

for i in * 
do 
  [[ -d $i ]] && ./"$i"/all
done
于 2013-06-04T07:45:23.273 に答える
-1

どうですか

for D in `ls`; do
    $D/all
done

編集:

各フォルダに入る必要がある場合:

for D in `ls`; do
    cd $D
    ./all
    cd ..
done

編集 (スペース + ディレクトリのみ):

for D in `ls -d`; do
    cd "$D"
    ./all
    cd ..
done
于 2013-06-04T07:31:42.453 に答える