Bash 递归删除位于目录和深度嵌套目录中的文件中的代码行

Bash 递归删除位于目录和深度嵌套目录中的文件中的代码行,bash,unix,Bash,Unix,我想了解如何使用bash命令/脚本删除以特定扩展名结尾的文件中的某些代码行,这些代码行位于目录和(深度嵌套的)子目录中 基本上,我想删除任何以import开头并以(此处有一些文件名).scss“结尾的代码行,如果您有perl find . -type f -name '*.extension' | xargs perl -pi.bak -e 's/^import.*\.sccs.*//' 这将用空行替换每个匹配的导入语句,并保留名为filename.bak的备份,以防万一。如果您不想备份,请从

我想了解如何使用bash命令/脚本删除以特定扩展名结尾的文件中的某些代码行,这些代码行位于目录和(深度嵌套的)子目录中

基本上,我想删除任何以
import
开头并以
(此处有一些文件名).scss“

结尾的代码行,如果您有perl

find . -type f -name '*.extension' |
xargs perl -pi.bak -e 's/^import.*\.sccs.*//'

这将用空行替换每个匹配的导入语句,并保留名为
filename.bak的备份,以防万一。如果您不想备份,请从perl语句中删除
.bak
部分。

当我运行此命令时,我得到
sed:invalical选项--
。Prolly
--in-place
应该是
-in-place
?@brandNew这假设GNU
sed
具有
--in-place
arg。您使用的是什么操作系统?我正在运行MacOS High Sierra。当我使用标志
-in-place
运行它时,它会显示
sed:RE-error:unliked byte sequence
,然后将
-place
附加到文件名。您可以粘贴
sed--version
输出吗?您可以使用选项
-I
而不是长格式的
-in-place
?执行此命令,但不会删除任何内容。这是有或没有
.bak
part@brandNew也许锚定太严格了。行的开头是否真的没有空格,即开头是否为“导入”?您确实将
扩展名
更改为您想要的特定扩展名,比如python文件的
*.py
find . -type f -name '*.extension' |
xargs perl -pi.bak -e 's/^import.*\.sccs.*//'