1

在过去的一个小时里,我一直在试验 sed,但似乎无法让它工作。我需要在文件夹中所有 python 文件的开头添加一行,例如文件夹“A”。

首先,我使用 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}'

如果你想execfind

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 回答