如何使用perl命令行在目录中的每个文件中添加一行

时间:2014-03-04 10:02:39

标签: perl

我想在目录中的每个文件的开头添加一行。

perl -i.bkp -p -e 'print "#include top_level.reset\n" if $. == 1' *.reset

但是此命令仅更新目录中的第一个文件。我认为这是因为$.没有为下一个文件重置。

如何修改所有文件。

2 个答案:

答案 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'