是否可以找到class Button extends Component {
constructor(props) {
super(props);
}
render() {
return (
<TouchableOpacity onPress={this.props.onPress} style={styles.cardButtonWrap}>
<Text style={styles.cardButton}>Button</Text>
</TouchableOpacity>
);
}
}
之类的所有文件并在文件开头插入一些特定的行?寻找类似的东西:
*.js
答案 0 :(得分:5)
这是一种在文件开头添加一行的方法:
sed -i '1s/^/line_to_be_added\n/' file
然后,您可以使用上面的代码find
来实现您的最终目标:
find . -type f -name '*.js' -exec sed -i '1s/^/line_to_be_added\n/' {} \;
注意:此答案已经过测试,适用于GNU
sed
。
编辑:上面的代码无法在空.js
文件上正常运行,因为上面的sed
命令在空文件上无法正常工作。解决方法是测试文件是否为空,如果是,则通过echo
添加所需的行,否则通过sed
添加所需的行。这一切都可以在(长)单行中完成,如下所示:
find . -type f -name '*.js' -exec bash -c 'if [ ! -s "{}" ]; then echo "line_to_be_added" >> {}; else sed -i "1s/^/line_to_be_added\n/" {}; fi' \;
编辑2 :正如用户Sarkis Arutiunian指出的那样,我们需要在表达式之前添加''
,在\'$'
之前添加\n
以使其正常工作MacOS sed。这是一个例子
sed -i '' '1s/^/line_to_be_added\'$'\n/' filename.js
答案 1 :(得分:2)
如果你想要一个兼容GNU和BSD sed的移植的解决方案,请使用以下内容将文本添加到第一行,然后将其余内容保持不变:
sed '1 { x; s/^.*/foo/; G; }' example.txt
假设语料库:
bar
baz
这将打印:
foo bar baz
您可以在脚本中保存转换,然后使用查找或 xargs 和sed -i
标记进行就地编辑确保一切都按照你期望的方式运作。
使用sed有一个主要限制:如果文件为空,它将无法正常工作。这可能不是你原来的问题,但如果这是可能的话,你需要使用类似cat <(echo foo) example.txt | sponge example.txt
的东西来就地编辑文件,或者使用临时文件并在连接后移动它们。
注意:海绵是非标准的。它可以在moreutils包中找到。