#!/usr/bin/perl -w
use strict;
use File::Find;
find( \&wanted, '/var/www/html/allsitecopy' );
sub wanted {
return if /^\.\.?$/ and not /\.html?$/i and not -f;
local $/;
open F, "< $File::Find::name" or do {
warn "Cannot read from $File::Find::name: $!";
return;
};
binmode F;
my $mass = <F>;
close F;
$mass =~ tr/\cM//d;
open F, "> $File::Find::name" or do {
warn "Cannot write to $File::Find::name: $!";
return;
};
binmode F;
print F $mass;
close F;
print "$File::Find::name all ok!\n";
}
Не рекомендую запускать подобные программы, не разобравшись, правильно
ли оно закрывает открытые файлы. Это все конечно очень здорово, что это
можно
cделать, но все-таки голову на плечах нужно иметь, сначала попробовать
на маленькой поддиректории, убедится, что все ок и только после этого
что то делать программой с серьезными данными.
Подсчет определенных файлов во всех вложенных
директориях
Пример использования модуля File::Find для
рекурсивного(вход во все поддиректории) просмотра
или подсчета числа html или shtml или htm файлов(эти три вида файлов
определяеются реглярным выражением s?html?):
#!/usr/bin/perl -w
use File::Find;
find \&wanted, '/var/www/html';
sub wanted {print $count++, "\t$File::Find::name all ok!\n" if /s?html?/i}
Всего 4 строчки против в среднем 10-20... удобно,быстро, и, главное,
лениво.