Bash 递归删除位于目录和深度嵌套目录中的文件中的代码行
我想了解如何使用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的备份,以防万一。如果您不想备份,请从
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这假设GNUsed
具有--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.*//'