我正在尝试解压缩文件。在解压之前,我想知道已安装卷上的可用空间。计划是如果没有足够的空间,我不会解压它!那么如何使用 Perl 找到已安装卷上的可用空间?顺便说一句,我正在使用 Perl 进行 tar 和 untar。
每个人都在谈论df
,dh
但这些命令在挂载点上不起作用。如果我想在挂载点上找到可以写入的空闲空间怎么办?
您可能需要 CPAN 模块Filesys::DfPortable。
使用 shell 命令生成 Perl 可以使用的单个 K-free 数字:
切换到要解压的目录(如果还没有的话)并执行:
df . | grep -v '^Filesystem' | awk 'NF=6{print $4}NF==5{print $3}{}'
或替换“。” 与实际的安装点。
grep 去掉了标题,awk 打印出可用于拆分行和非拆分行的千字节。
这是基于以下类型的输出,如果您的 UNIX 输出不同,您可能需要进行调整:
文件系统 1K-blocks Used 可用 Use% Mounted on /dev/sda4 206434224 56965356 139065176 30% / varrun 1037296 132 1037164 1% /var/run varlock 1037296 0 1037296 0% /var/lock 开发 1037296 68 1037228 1% /开发 devshm 1037296 12 1037284 1% /dev/shm /dev/sda2 93327 43535 44973 50% /boot /dev/sdc1 155056484 29417456 117824612 20% /media/extra160 gvfs-fuse 守护进程 206434224 56965356 139065176 30% /home/pax/.gvfs
您可以使用内置的 linux 命令来获得结果:
my $vol = "/dev/volume";
my $freespace = `df $vol | grep '$vol' | awk '{print \$4}'`;
# free space in megabytes.
$freespace = sprintf("%01.2f", $freespace / 1024);
尝试Filesys::DF(posix 系统)或Filesys::DfPortable(也适用于 Windows)。它们都使用本机代码来枚举 FS 统计信息。