我想在目录中的每个文件的开头添加一行。
perl -i.bkp -p -e 'print "#include top_level.reset\n" if $. == 1' *.reset
但是此命令仅更新目录中的第一个文件。我认为这是因为$.
没有为下一个文件重置。
如何修改所有文件。
答案 0 :(得分:1)
你是对的,$。处理@ARGV时,文件之间没有重置。见perlvar。您可以通过在EOF上明确关闭ARGV来解决它 - 请参阅eof。但我不会打扰,而是使用shell来迭代文件:
for f in *.reset; do perl -i.bkp -p -e 'print "#include top_level.reset\n" if $. == 1' $f; done
答案 1 :(得分:0)
ls -1 *.reset | xargs -n 1 perl -i.bkp -p -e 'print "#include top_level.reset\n" if $. == 1'