という名前のフォルダーに多数のシェル スクリプトがあるとしますtest
。特定の1つのファイルを除いて、その中のすべてのファイルを実行したい。私は何をしますか?ファイルを再配置したり、手動でファイルを次々に実行したりすることはできません。これを1行で行う方法はありますか。sh path/to/test/*.sh
それとも、すべてのファイルを実行する に何かを追加するのでしょうか?
質問する
192 次
4 に答える
4
for file in test/*; do
[ "$file" != "test/do-not-run.sh" ] && sh "$file"
done
を使用している場合はbash
、拡張パターンを使用して望ましくないスクリプトをスキップできます。
shopt -s extglob
for file in test/!(do-not-run).sh; do
sh "$file"
done
于 2012-08-31T12:20:07.587 に答える
1
for FILE in `ls "$YOURPATH"` ; do
test "$FILE" != "do-not-run.sh" && sh "$YOURPATH/$FILE";
done
于 2012-08-31T12:11:47.857 に答える
1
find path/to/test -name "*.sh" \! -name $pattern_for_unwanted_scripts -exec {} \;
検索は、.sh (-name "*.sh") で終わり、不要なパターン (\! -name $pattern_for_unwanted_scripts) に一致しないディレクトリ内のすべてのエントリを再帰的に実行します。
于 2012-08-31T12:23:46.660 に答える
0
でbash
、指定されたパターンの1つ以外に一致するものshopt -s extglob
を使用できるようにする「拡張グロブ」を使用できます。!(pattern-list)
あなたの場合:
shopt -s extglob
for f in !(do-not-run.sh); do if [ "${f##*.}" == "sh" ]; then sh $f; fi; done
于 2012-08-31T12:26:39.523 に答える