ご協力いただきありがとうございます!ディレクトリ内のすべてのフォルダのBash-for-loop(一部を除く)
私はbashでこのコードを持っている:魔法のように動作
for d in this_folder/*
do
plugin=$(basename $d)
echo $plugin'?'
read $plugin
done
。 'this_folder'の中のすべてのフォルダについて、それを質問としてエコーし、同じ名前の変数に入力を格納します。
しかし、私はいくつかのフォルダを除外したいと思っています。たとえば、そのディレクトリ内のすべてのフォルダを尋ねます。グローバル、プラグイン、およびcssのいずれのフォルダでもない場合に限ります。
どのように私はこれを達成することができますか?
ありがとうございます!
UPDATE:あなたはディレクトリのリストを構築し、結果を変数に格納するfind
とawk
を使用することができます
base="coordfinder|editor_and_options|global|gyro|movecamera|orientation|sa"
> vt_conf.sh
echo "# ========== Base" >> vt_conf.sh
for d in $orig_include/@($base)
do
plugin=$(basename $d)
echo "$plugin=y" >> vt_conf.sh
done
echo '' >> vt_conf.sh
echo "# ========== Optional" >> vt_conf.sh
for d in $orig_include/!($base)
do
plugin=$(basename $d)
echo "$plugin=n" >> vt_conf.sh
done
これは非常に良い選択ですが、 'this_folder'にディレクトリとファイルの両方がある場合はすべてのファイルも返します。 'for'行の末尾に('! 'の後に)末尾に '/'を付けると、これはきれいに動作します。 また、(あなたとOPに)引用符で囲まれた '$ d 'への参照を囲むことをお勧めします。これはスペースでファイル指定をカバーすることができます。 –
@CharlesRobertoCanato:良いアドバイス、私はあなたの提案を追加しました – Thor