Как я могу найти свободное пространство доступным на смонтированных объемах с помощью Perl?

Вы должны использовать регулярное выражение для этого вида анализа:

public class Example {

    public static void main(String[] args) {
        String input = "Hi 57 how are you 30";
        System.out.println(process(input));
    }

    private static boolean process(String input) {
        Pattern pattern = Pattern.compile(".*?(\\d+).*?(\\d+)");
        Matcher matcher = pattern.matcher(input);

        if (matcher.matches()) {
            int one = Integer.parseInt(matcher.group(1));
            int other = Integer.parseInt(matcher.group(2));
            System.out.println(one);
            System.out.println(other);

            int total = one + other;
            return total >= 80 && total <= 95;
        }

        return false;
    }
}

Вывод:

57

30

true [ 115]

6
задан chaos 19 September 2009 в 17:54
поделиться

3 ответа

Используя оболочку управляет для генерации единственного K-бесплатного-номера, который может использовать Perl:

Изменение в каталог, где Вы хотите к untar (если не уже там), и выполнитесь:

df . | grep -v '^Filesystem' | awk 'NF=6{print $4}NF==5{print $3}{}'

Или замена "." фактической точкой монтирования.

grep избавляется от заголовка, и awk распечатывает килобайты, доступные и для разделения и для строк без разделения.

Это основано на следующем виде вывода, Вам, вероятно, придется корректироваться, если Ваш UNIX производит что-то другое:

Filesystem    1K-blocks      Used  Available  Use%  Mounted on
/dev/sda4     206434224  56965356  139065176   30%  /
varrun          1037296       132    1037164    1%  /var/run
varlock         1037296         0    1037296    0%  /var/lock
udev            1037296        68    1037228    1%  /dev
devshm          1037296        12    1037284    1%  /dev/shm
/dev/sda2         93327     43535      44973   50%  /boot
/dev/sdc1     155056484  29417456  117824612   20%  /media/extra160
gvfs-fuse-daemon
              206434224  56965356  139065176   30%  /home/pax/.gvfs
3
ответ дан 8 December 2019 в 13:03
поделиться

Вы, вероятно, хотите модуль CPAN Filesys:: DfPortable.

13
ответ дан 8 December 2019 в 13:03
поделиться

Вы могли просто использовать встроенные команды Linux для получения результата:

my $vol = "/dev/volume";
my $freespace = `df $vol | grep '$vol' | awk '{print \$4}'`;
# free space in megabytes.
$freespace = sprintf("%01.2f", $freespace / 1024);
2
ответ дан 8 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: