web-dev-qa-db-ja.com

ファイル名に基づいてテキストファイルをマージする

次の形式のファイルが何百もあります。

2013_01_19_xyxyxyx.txt
2013_01_19_xyxyxyx.txt
2014_03_21_xyxyxyx.txt
2014_03_21_zxzxzxz.txt
2014_03_22_abababa.txt
2014_03_22_cbcbcbc.txt
etc.

ファイルを次の場所にマージしたいと思います。

2013_01_19.txt
2014_03_21.txt
2014_03_22.txt

どうすればこれを達成できますか?

3
Greg

ファイル名の最後の部分にアンダースコアがない(そして、globに一致するディレクトリに他に何もない)場合、以下は機能するはずです。

for file in ????_??_??_*.txt; do
  echo cat "$file" ">>""${file%_*}.txt"
done

必要なものが確実に揃ったら、echoの部分と>>の前後の引用符を削除します。

3
Graeme