いくつかのファイルがあるとしましょう。
touch {1..10}-{1..10}.dat
2番目の番号に関連付けられています。 forループの解決策は次のとおりです。
for i in {1..10}; do
cat *-${i}.dat > ${i}.out
done
リダイレクトでglobの内容を一致させることは可能ですか?それはまるで
cat *-*.dat > *.out
明らかに明確ではありませんが、次のような考えがあります。
cat *-{1..10}.dat > {1..10}.out
動作する必要があります。ここに単純な非forループソリューションはありますか?
ベストアンサー1
あなたは次のような狂気をすることができます
$ eval "bash -c 'n=\$1; echo \$n' cmd "{1..2}\;
1
2
次のコマンドを使用すると、理解しやすくなりますecho
。
$ echo "bash -c 'n=\$1; echo \$n' cmd "{1..2}\;
bash -c 'n=$1; echo $n' cmd 1; bash -c 'n=$1; echo $n' cmd 2;
あなたの場合:
eval "bash -c 'n=\$1; cat *-\$n.dat > \$n.out' cmd "{1..10}\;