フォルダー内のすべてのtxtファイルに単語を書き込む


10

フォルダ内のすべての.txtファイルに「cat」という単語を書き込むにはどうすればよいですか?

回答:


20

単純なforが作業を行います:

for i in ./*.txt; do echo 'cat' >> "$i"; done;

これは、現在のディレクトリにあるすべてのtxtファイルのリストを取得し、それら全体をループし、それらにecho猫を入れます(コンテンツに追加します)。に変更>>して>、ファイルの内容をcatで上書きできます。

もう1つのことはtee、ストリームを複数のファイルにリダイレクトすることです。

追加するには:

echo "cat" | tee -a *.txt

上書きするには:

echo "cat" | tee *.txt

使用する短所は何echo "cat" >> *.txtですか?
hytromo 2017

4
失敗するはずの@hakermaniaambiguous redirect
Zanna

13

ファイルが空でない場合は、sedループせずに使用できます。cat最初に追加するには:

sed 'i\cat' *.txt

最後に追加するには:

sed 'a\cat' *.txt

2行目に追加するには:

sed '2 a\cat' *.txt

前に行を追加するにはfoo

sed '/foo/ i\cat' *.txt

ただし、空のファイルでは機能しません。バグの種類。

(へは実際にあなたが必要とするテストした後のファイルへの書き込み-iオプションを:sed -i 'a\cat' *.txt


私はsedが嫌いです:))、それを使ってできることがたくさんあるので、私はそれらを認識していません:))
Ravexina

@Ravexina sedは私のジャムです;)
Zanna

なぜ'i\cat'スラッシュの代わりにバックスラッシュを使うのですか?
phuclv 2017

@LưuVĩnhPhúcバックスラッシュは実際にはオプションですが、'icat'またはを置くこともできますi cat。バックスラッシュは慣習的なものだと思います。
スラッシュ

4

Pythonのアプローチ:

#!/usr/bin/env python
import sys

for i in sys.argv[1:]:
    with open(i,'w') as fd:
        fd.write("cat\n")
  • sysモジュールを使用してコマンドライン引数を反復処理します
  • 各コマンドライン引数は、書き込み用のファイルとして開かれます
  • 改行付きの「猫」は、次に進む前にファイルに書き込まれます

使用法はであり、現在の作業ディレクトリ内の./add_cat.py *.txtすべての.txtファイルを操作します。これを改善するには、コマンドライン引数#1を文字列として使用して、そこに「cat」をハードコーディングする代わりに書き込むことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.