<分区>
是否有任何方法可以找到所有文件,如 *.js
并在文件开头插入一些特定的行?寻找类似的东西:
找到 . -name '*.js' -exec sh -c '[插入这个'字符串'] "${0%.js}"' {}\;
<分区>
是否有任何方法可以找到所有文件,如 *.js
并在文件开头插入一些特定的行?寻找类似的东西:
找到 . -name '*.js' -exec sh -c '[插入这个'字符串'] "${0%.js}"' {}\;
最佳答案
这是一种在文件开头添加一行的方法:
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 指出的那样,我们需要在表达式前添加 ''
并在 前添加
以使其在 MacOS sed 中正常工作。举个例子\'$'
code>\n
sed -i '' '1s/^/line_to_be_added\'$'\n/' filename.js
编辑 3:这也有效,编辑器将知道如何语法高亮它:
sed -i '' $'1s/^/line_to_be_added\\\n/' filename.js
关于regex - 在文件开头插入一个新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43969732/