web-dev-qa-db-ja.com

すべてのフォルダーをループし、スクリプトを実行する

現在のディレクトリにbashスクリプトinstall.shがあり、複数のディレクトリを含むappsディレクトリがあります。 appフォルダー内のこれらのサブディレクトリをループして、スクリプトを実行したいと思います。最初のフォルダーでスクリプトを実行すると、戻って次のフォルダーに入ります。私はこれを試しましたが、次々にスキップしています。つまり、すべての奇数フォルダーに入り、偶数フォルダーに入っていないということです。

install.shのコード

for f in apps/*;
  do 
     [ -d $f ] && cd "$f" && echo Entering into $f and installing packages
     cd ..
  done; 
7
devo

親ディレクトリのフルパス(私の場合はappsディレクトリが私のホームディレクトリにあります)を使用し、余分なコマンドを1つ削除します(cd ..

for f in ~/apps/*;
  do 
     [ -d $f ] && cd "$f" && echo Entering into $f and installing packages
  done;

スクリーンショットを参照:cd ..コマンドを使用し、apps/*を使用

enter image description here

スクリーンショットを参照:cd ..コマンドなしで~/apps/*を使用

enter image description here

9
αғsнιη

この提案には、findとともにexecを使用できます。あなたのinstall.sh

#!/bin/bash
find ./apps -type d -exec echo Entering into {} and installing packages \; 

-execの後のテキストをコマンドに置き換えます

例えば

#!/bin/bash
find ./apps -type d -exec touch {}/test.txt  \;  

アプリとそのすべてのサブディレクトリをループし、text.txtファイルを作成します

2
g_p