1

過去 1 時間にわたって sed を試してみましたが、うまく動作しないようです。フォルダー「A」の例のフォルダー内のすべてのpythonファイルの先頭に行を追加する必要があります。

まず、find を使用してすべての python ファイルを検索します。

find /A -maxdepth 1 -name "*.py"

これは、python ファイルのリストを表示します。(動作します!)

次に、オンラインのいくつかのブログやチュートリアルで提案されているように、次のことを試してみます。

find /A -maxdepth 1 -name "*.py" -exec sed -i '1i # -*- coding: utf-8 -*-'

次のエラーが表示されます。

sed: 1: "/A/buttons.py": extra characters at the end of h command

hコマンドとは?どうすればこれを適切に行うことができますか?

ちなみに私はMac OS Xを使っています。

4

2 に答える 2

2

find/sed コマンドを次のコマンドに置き換えます。

find /A -maxdepth 1 -name "*.py" -exec sed -i.bak '1i\
Text to prepend
' {} \;
cd /A
for i in *.py; do
[[ $(sed q $i) != "# -*- coding: utf-8 -*-" ]] && sed -i.bak '1i\
# -*- coding: utf-8 -*-
' $i
done 
于 2013-02-21T12:04:29.863 に答える
0

以下のコマンドを使用してください。私の場所で動作しています

find /A -maxdepth 1 -name "*.py"| xargs perl -pi -e 'if($f==1 or $.==1){s/^/# -*- coding: utf-8 -*-\n/g;$f=0;}if(eof){$f=1}'

execで使用したい場合find

find /A -maxdepth 1 -name "*.py" -exec perl -pi -e 'if($f==1 or $.==1){s/^/# -*- coding: utf-8 -*-\n/g;$f=0;}if(eof){$f=1}' {}/;
于 2013-02-25T13:17:32.360 に答える