1つのコマンドで異なるフォルダにある複数のファイルを変更しますか?

1つのコマンドで異なるフォルダにある複数のファイルを変更しますか?

abc.txt私のフォルダ/etc/zyz/と複数のサブフォルダにファイルがあります。/etc/zyz-1/ /etc/zyz-2/

echoコマンドを使用してフォルダ内のすべてのファイル(すべて名前付き)を変更するにはどうすればよいですか?一部のシステムにはフォルダが2つしかあり、他のシステムには10を超えるフォルダがあります。abc.txt/etc/zyz

私が実行したいコマンドの例

echo 'New line data' >> abc.txt

abc.txt < /dev/null

ベストアンサー1

次のツリーが与えられたとき(空のabc.txt):

.
├── zyz
│   └── abc.txt
├── zyz-1
│   └── abc.txt
└── zyz-2
    └── abc.txt

次のコマンドを使用して、すべてのabcファイルを一覧表示できます。

$ echo zyz*/abc.txt
  zyz-1/abc.txt zyz-2/abc.txt zyz/abc.txt

tee -aこれらすべてのファイルにいくつかの入力ストリームを同時に追加できます。

$ echo 'New line data' | tee -a zyz*/abc.txt
  New line data

2回実行すると、各abc.txtに2行が含まれます。

$ cat zyz/abc.txt
  New line data
  New line data
$ cat zyz-1/abc.txt
  New line data
  New line data
$ # ...

これを消去するには、次のようにします。

$ </dev/null tee zyz*/abc.txt

または

$ : | tee zyz*/abc.txt

find -exec(短い名前を持つファイルのほんの数だけがARG_MAX制限に達してはいけませんが、私のフォームで使用したファイルの数が多すぎる必要があります+(マンページを参照)。

おすすめ記事