Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Сравнить содержимое файла с директорией


Автор: NoraS 1.9.2010, 02:51
Имеется директория (каталог/папка) с файлами.
В ней же лежит файл
В наличии имеется файл "base.txt", в которой сохранен результат исполнения команды LS:
bill5438.bak [FILE] 01/03/2010 00:12:28 23850
bill2516.bak [FILE] 08/08/2010 23:16:56 22500
bill5374.bak [FILE] 28/02/2010 00:12:24 30300
bill5749.bak [FILE] 06/03/2010 00:12:50 27500
bill5500.bak [FILE] 02/03/2010 00:12:32 26700
bill5795.bak [FILE] 07/03/2010 00:12:54 29800
Необходимо проверить на соответствие файла по имени и размеру тому,  что записано в файле.
При совпадении по обеим параметрам продолжить обработку, при не совпадении выполнить некие действия (перезаписать файл)

по вопросу прочитано много, но примеров нет. Задание подобного типа встречаю первый раз.
Спонсируйте примером кода. smile 

Автор: shamber 1.9.2010, 14:09
задание куда, если не секрет?

вывод stat вам в помощь

Автор: NoraS 2.9.2010, 01:22
[quote=shamber, 1.9.2010,  14:09, post2205840]задание куда, если не секрет?[QUOTE]



Если бы это было задание - всё бы было просто. Это реальное программирование для жутко вредной системы :-(


Автор: dva300 2.9.2010, 07:38
Цитата

Необходимо проверить на соответствие файла по имени и размеру тому,  что записано в файле.


а если так получилось что файл одинаковый размер с некоторой переодичностью и как назло не был одновлен ? 
думаю надо как мин добавить дату ...

ниже пример.
Код

use strict;
my $path = '/usr/local/tmp';
chdir($path);
opendir(DIR,"$path");
foreach(readdir(DIR))
    {
    my $file_name = $_;
    my @stat = stat($file_name);
    if (-f $file_name)
        {
        my $f = 0;
        open(FF,"dir.txt");
        while(<FF>)
            {
            if (/$file_name/ && /$stat[7]/)
                {                
                $f = 1;
                last;
                }
            }
        close(FF);
        if ($f)
            {
            print "Do something -> File [ $file_name ] is OK\n";
            }
        else
            {
            print "Do something -> File [ $file_name ] is NOT OK\n";
            }
        }
    }
closedir(DIR);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)