我有一个文件夹。该文件夹中有32个文件和3个目录。我想在顶部的每个文件上添加一些文本行。我怎样才能做到这一点?
答案 0 :(得分:6)
使用File::Find查找文件。使用Tie::File和unshift将行添加到文件顶部。
答案 1 :(得分:2)
TLP已经告诉过你如何解决问题的一些提示。但总有一种方法可以做到这一点。而不是File :: Find和Tie :: File我将使用一些更“现代”的模块。在这些完整的例子中,我使用带有迭代接口的Path :: Class :: Rule而不是我更喜欢的递归接口。
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use open ':encoding(UTF-8)';
use open ':std';
use Path::Class;
use Path::Class::Rule;
my $rule = Path::Class::Rule->new->file;
my $iter = $rule->iter(dir('test'));
while ( my $file = $iter->() ) {
print $file->stringify, "\n";
add_line_to_file($file, "Sid was here.\n");
}
# 1: Path::Class::File Object
# 2: The Line
sub add_line_to_file {
my ( $file, $line ) = @_;
# Open File - return IO::File object
my $fh = $file->open('>>') or die "Cannot open $file: $!\n";
# Seek to end
$fh->seek(0, 2);
# Add line
$fh->print($line);
$fh->close;
return;
}
答案 2 :(得分:0)
这可行:
perl -pi -e 's/^/my text\n/' * */*
请在您的目录副本上试一试,以确保它符合您的要求。