ループ内で2つのファイルをリンクする方法は?

ループ内で2つのファイルをリンクする方法は?

新しいファイルにリンクしたい2つのファイルがありますが、他のディレクトリ(a、b、c、g、z)と同じ2つのファイルがあるので、ループを使用してこれを行いたいと思います。私のループは次のとおりです

for i in a b c g z
do
    (cd $i/; for i in File_*_best3.txt *_new3.txt; do cat $i > combined.txt; done)
done

しかし、私の結果はcombined.txt2番目の入力ファイルとまったく同じファイルなので、猫は機能しません。ここで問題は何ですか?

ベストアンサー1

問題は、cat実行されるたびに出力ファイルが切り捨てられる(空になる)ことです。リダイレクトを使用しているためです>

選択する:

for d in a b c g z
do
    (cd "$d"; rm -f combined.txt; for i in File_*_best3.txt *_new3.txt; do cat "$i" >>combined.txt; done)
done

または

for d in a b c g z
do
    (cd "$d" && cat File_*_best3.txt *_new3.txt >combined.txt)
done

私はそれを仮定し、File_*_best3.txt1*_new3.txtつのファイル名とのみ一致します。

おすすめ記事