Как проверить наличие не пустых файлов в Perl - PullRequest
2 голосов
/ 27 декабря 2011

Я использую команду find для поиска файлов в каталогах. Я хотел бы проверить, если файлы в каталогах не пустые (не 0 размер), прежде чем продолжить. Благодаря руководству find я знаю, как идентифицировать пустые файлы с помощью опции -empty.

Однако я хочу использовать Perl для проверки непустых файлов. Как я могу это сделать?

Заранее спасибо.

Ответы [ 2 ]

11 голосов
/ 27 декабря 2011

См. perldoc perlfunc -X для обновления операторов проверки файлов Perl.Вот что вам нужно:

-s  File has nonzero size (returns size in bytes).

Простой скрипт, показывающий, как использовать File::Find:

#!/usr/bin/perl -w
use strict;

use File::Find;

# $ARGV[0] is the first command line argument
my $startingDir = $ARGV[0];

finddepth(\&wanted, $startingDir);

sub wanted
{
    # if current path is a file and non-empty
    if (-f $_ && -s $_)
    {
        # print full path to the console
        print $File::Find::name . "\n";
    }
}

В этом примере у меня вывод идет на консоль.Чтобы передать его в файл, вы можете просто использовать перенаправление вывода оболочки, например ./findscript.pl /some/dir > somefile.out.

1 голос
/ 27 декабря 2011

Пожалуйста, посмотрите на perldoc http://perldoc.perl.org/functions/-X.html

-z  File has zero size (is empty).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...