我想从许多文件中删除所有以“sometext”开头的行:
find . -name "*.php"|xargs -I {} sed -e '/^sometext/d' {}
但这让我输出到控制台。如何直接修改这些文件?
使用 sed 的 -i 选项:
sed -i -e '/^sometext/d' file
告诉 sed “就地”修改文件:
find . -name "*.php" | xargs sed -i '' -e '/^sometext/d'
注意''
后面的空格-i
是必须的,否则会创建一个带有默认后缀的新副本。
如果你不需要-I
的话,还要注意修剪xaegs
您可以通过以下方式完成此操作exec
:
find . -name "*.php" -exec sed -i '/^sometext/d' {} \;