次のようなことをしたい
specmd file5.awe
specmd file6.awe
specmd file7.awe
specmd file8.awe
specmd file9.awe
specmd file10.awe
specmd file11.awe
specmd file12.awe
これを行うための良い方法はありますか?私が考える最善の方法は
ruby -e "10.upto(15){|i| puts i}" | xargs -I {} specmd file{}.awe
これはRubyに依存し、この場合Rubyが不要なように感じるため、確かに良いアプローチではありません。
注:より多くのファイルがあります(例:file4.awe
、file13.awe
)。いいえ必要なので、どのワイルドカード(おそらく?)も私が望むように動作しません。
答え1
Bashでは、組み込みコマンドを使用して範囲を繰り返すループを作成できます。
for i in {5..12}
do
specmd file${i}.awe
done
他の同様の状況のためのより多くのオプションがあります。ここにリンクを残しておきます。
答え2
私はこれが古い質問であることを知っていますが、抵抗することはできません。
forループもなく、whileループもなく、純粋なコマンドラインbashだけがあります。
echo file{5..12}.awe | xargs -n1 specmd
答え3
for f in file[5-9].awe file1[012].awe
do : stuff with "$f" files
done
...いいえみんな世界中で彼らは同じです。
それ以外の場合は、次のようにできます。
x=4
while [ 13 -gt "$((x+=1))" ]
do : stuff with "file$x.awe"
done
...繰り返して反復子を生成する利点があり、ほとんどすべてのスクリプトシェルでデフォルトで動作します。(グローブも同様)。
答え4
GNU Parallelを使用すると、次のようになります。
parallel specmd file{}.awe ::: {5..12}
seq 5 12 | parallel specmd file{}.awe
parallel specmd ::: file{5..12}.awe