我正在尝试解压文件。在解开之前,我想知道已安装卷上的可用空间。计划是如果没有足够的空间我不会解开它!那么如何使用Perl找到已安装卷上的可用空间?顺便说一句,我使用Perl作为tar和untar。
每个人都在说df
和dh
,但这些命令对挂载点不起作用。如果我想在安装点上找到可以写入的空闲空间怎么办?
答案 0 :(得分:13)
您可能需要CPAN模块Filesys::DfPortable。
答案 1 :(得分:3)
使用shell命令生成Perl可以使用的单个K-free数字:
切换到要解压缩的目录(如果尚未存在)并执行:
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
答案 2 :(得分:2)
你可以使用内置的linux命令来获得结果:
my $vol = "/dev/volume";
my $freespace = `df $vol | grep '$vol' | awk '{print \$4}'`;
# free space in megabytes.
$freespace = sprintf("%01.2f", $freespace / 1024);
答案 3 :(得分:0)
尝试Filesys::DF(posix系统)或Filesys::DfPortable(Windows也是如此)。它们都使用本机代码来枚举FS统计信息。