如何移除文件夹及子目录下所有JS文件中指定模式后的内容?
解决方法
要实现移除指定文件夹及其子文件夹下所有.js文件中,第一次匹配到指定模式后所有内容(包括模式所在行的模式部分及后续所有行),可以使用以下组合命令:
find . -type f -name '*.js' -exec sed -i.bak '/PATTERN/ { s/PATTERN.*//; q; }' {} \;
命令说明:
find . -type f -name '*.js':遍历当前目录及子目录下所有.js文件sed -i.bak:对文件进行原地修改,同时生成.bak后缀的备份文件(如果不需要备份,GNU sed可改为-i,BSD/macOS sed需改为-i '')/PATTERN/ { ... }:仅对包含指定模式的行执行花括号内的操作s/PATTERN.*//:删除该行中PATTERN及之后的所有内容,保留模式前的文本q:处理完该行后立即退出sed,直接丢弃后续所有行
匹配精确模式(可选)
如果需要匹配完整的单词(避免部分匹配),可以给模式加上单词边界:
find . -type f -name '*.js' -exec sed -i.bak '/\<PATTERN\>/ { s/\<PATTERN\>.*//; q; }' {} \;
效果验证
针对你提供的示例文件:
原文件内容:
aasdja asdasd PATTERN ajkhsdasjd akjshdaskjhd
执行命令后,文件内容将变为:
aasdja asdasd
内容的提问来源于stack exchange,提问作者hacpires
相关产品推荐
相关产品推荐

