forループなしで複数のファイルを複数のファイルにリンクする

forループなしで複数のファイルを複数のファイルにリンクする

いくつかのファイルがあるとしましょう。

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}\;

おすすめ記事