私は偶然会ったたくさんエッセイを含む答え:
- OSXのsedは特定の行に挿入されます。
- https://stackoverflow.com/questions/14846304/sed-command-error-on-macos-x
- https://stackoverflow.com/questions/4247068/sed-command-failing-on-mac-but-works-on-linux
- https://stackoverflow.com/questions/16266281/how-to-add-text-to-the-beginning-of-all-files-in-a-folder
そして私が望むことをする方法を見つけることができません。ディレクトリ内のすべてのファイル#encoding:utf-8
の先頭に(再帰的に)挿入する必要があります。.html.erb
このコマンドを試してみました。
find . -iname "*.erb" -type f -exec sed -ie "1i \#encoding:utf-8" {} \;
ただし、次のエラーが発生します。
sed: 1: "1i #encoding:utf-8": i コマンドの最後で \ の後に追加文字
答え1
答え2
ExモードでVimを使用できます。
ex -sc '1i|#encoding:utf-8' -cx file
1
行1を選択してください。i
テキストと改行の挿入x
保存して閉じる
答え3
必要なタスクを実行するいくつかの方法は次のとおりです。
sed
find . -iname "*.erb" -type f -exec \ sed -i '' '1s/^/#encoding:utf-8\n/' {} \;
確認するためにBSDにアクセスできないため、正しく読み取られることを
sed
保証できません。\n
単一のファイルに対してコマンドを試して-i
確認するために最初のファイルは必要ありません。パール
find . -iname "*.erb" -type f -exec \ perl -i -pe 'print "#encoding:utf-8\n" if $.==1;' {} \;
シェル
find . -iname "*.erb" -type f -exec \ sh -c 'echo "#encoding:utf-8" >tmp && cat "$1" >> tmp && mv tmp "$1"' sh {} \;