「cat」を使って一度に複数のファイルに書き込むには?

「cat」を使って一度に複数のファイルに書き込むには?

この質問は私に関連しています。前の質問

これは次の出力ですtree

[xyz@localhost Semester1]$ tree
.
├── Eng
│   ├── credits
│   ├── links
│   └── notes
├── IT
│   ├── credits
│   ├── links
│   └── notes
├── IT_workshop
│   ├── credits
│   ├── links
│   └── notes
├── LA
│   ├── credits
│   ├── links
│   └── notes
├── OS
│   ├── credits
│   ├── links
│   └── notes
├── OS_lab
│   ├── credits
│   ├── links
│   └── notes
├── Psy
│   ├── credits
│   ├── links
│   └── notes
├── Python
│   ├── credits
│   ├── links
│   └── notes
└── Python_lab
    ├── credits
    ├── links
    └── notes

9 directories, 27 files

さて、そのフォルダのクレジットファイル内の各コースで使用されているクレジットの数について言及したいと思いますcat

たとえば、コースごとのクレジット数は次のとおりです。

コース名 生産スタッフ
インゲ 2
ロサンゼルス サム
Python サム
オペレーティングシステム サム
それ サム
IT_ワークショップ 1
Python研究室 1
オペレーティングシステム研究室 1
心理学 2

Eng/credits にクレジットの詳細を追加するには、次のコマンドを実行する必要があります。

cat >> Eng/credits

クレジット数(例:2)を入力し、Ctrl+を押しますD

残りの8つのファイルに対しても同じ手順を実行する必要があります。これは面倒な作業のようです。一度にこれをすべて行う方法はありますかcat

Bashを知っている何人かの友達と話をしましたが、私の場合はechoorを使う方が良いと思いましたprintf。なぜこれが起こるのですか?


私はこれをしようとしています:

  • Eng/creditsファイルに数字2を記録したいと思います。
  • LA /クレジットファイルに数字3を記録したいです。
  • Python / creditsファイルに数字3を書きたいです。
  • OS/クレジットファイルに数字3を記録したいです。
  • IT /クレジットファイルに数字3を記録したいです。
  • IT_workshop/creditsファイルに数字1を書きたいです。
  • Python_lab/creditsファイルに数字1を書きたいです。
  • OS_lab/creditsファイルに数字1を書きたいです。
  • Psy / creditsファイルに数字2を書きたいです。

読んだ後弓のこ~の回答、次のコマンドを試しました。

echo {2,3,3,3,3,1,1,1,2} >> {Eng/credits,LA/credits,Python/credits,OS/credits,IT/credits,IT_workshop/credits,Python_lab/credits,OS_lab/credits,Psy/credits}

しかし、期待どおりに動作しません。

bash: {Eng/credits,LA/credits,Python/credits,OS/credits,IT/credits,IT_workshop/credits,Python_lab/credits,OS_lab/credits,Psy/credits}: ambiguous redirect

ベストアンサー1

Catはファイル全体を出力するために使用されます。オペランド(オプションではない引数)はファイルです。これにより、cat >> foostdoutファイルをfoo

echoとprintfはすぐにデータを取得します。

echo 2 >> foo

...ファイルに2を入れますfoo

Printf は、オブジェクトに書式を追加、標準化し、不明なデータに直面した場合に、潜在的により安全な方法を提供します。

おすすめ記事