私が書いたbashコードをすべてのサブフォルダー(「呼び出された」場所)で実行したい。私が書いたコードは単に「all」という名前で、各フォルダーで個別に実行すると問題なく実行されます。
しかし、このコードで実行すると実行されません (実行されますが、ファイルが見つからないなどのエラーが発生します)。
for D in *;do
all
done
間違えました!!!コード「all」を実行するには、各フォルダーに入る必要があります。それ、どうやったら出来るの?
ありがとう!
使用できます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
どうですか
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