如何使用perl one liner循环遍历许多文件

时间:2015-03-11 21:31:55

标签: perl

我正在尝试使用perl liner为第4行的许多perl文件添加一行。我正在使用:

 perl -pi -le 'print "     cell_type = pad;" if $. ==4' *.cell.plt

但这只是改变我目录中的第一个文件,而不是所有文件。如何一次在所有文件中插入行。我试过几种方法,但总是失败。请帮忙。谢谢。

1 个答案:

答案 0 :(得分:7)

您只能从一个文件句柄中读取,因此只有一行4.幸运的是,有一种方法可以重置$.

perl -i -ple'
    print "     cell_type = pad;" if $. == 4;
    close ARGV if eof;
' *.cell.plt

(请注意,eofeof()不同。)

或者,您可以为每个文件执行perl

find -maxdepth 1 -name '*.cell.plt' -type f -exec \
   perl -i -ple'print "     cell_type = pad;" if $. == 4' {} \;