findとsedを使用して、{}を含む行をファイルに再帰的に追加します。

findとsedを使用して、{}を含む行をファイルに再帰的に追加します。

.ts次のテキストで終わるすべてのファイルを再帰的に追加したいので、少なくともexport {};フォルダを除外する必要がありますnode_modules

私は試した:

find . f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -e '1 i\export {}' \;

結果:ファイルごとに次のようになります。sed: 1: "1 i\export ./src/query/ ...": extra characters after \ at the end of i command

アップデート:gnu-sedmacOSにインストールして試してみましたgsed。しかし、うまくいかないようです。無限に走っているようです。

ベストアンサー1

なぜなら:

文字列は'{}'次に置き換えられます。現在のファイル名 findのいくつかのバージョンと同様に、別の引数だけでなく、コマンド引数に現れるたびに処理されます。\シェル拡張から保護するために、両方の設定をエスケープまたは引用する必要があるかもしれません。

次の方法を使用します。

find . -type f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -i '1 i\export\{\}' {} \;

-i, --in-place-sedファイルを所定の位置に編集するオプション

おすすめ記事