我有这个文件
lrwxrwxrwx. 1 user user 32 Sep 20 15:43 SingletonLock -> user.hostname.com-22222
我需要perl识别该文件并获取其大小,我可以使用什么命令?
我试过了:
my $size = (lstat("/home/user/.config/google-chrome/SingletonLock -> user.hostname.com-22222"))[7];
print $size;
但变量为空,$!
为No such file or directory
答案 0 :(得分:3)
stat
功能?或者您可能需要lstat
来获取链接信息,或者readlink
来读取符号链接指向的名称。
stat
和lstat
工作的示例:
$ echo "Petunia" > user.hostname.com-22222
$ ln -s user.hostname.com-22222 SingletonLock
$ ls -l user.* Singl*
lrwxr-xr-x 1 jleffler staff 23 Sep 26 20:24 SingletonLock -> user.hostname.com-22222
-rw-r--r-- 1 jleffler staff 8 Sep 26 20:24 user.hostname.com-22222
$ cat stat.pl
#!/usr/bin/env perl
use strict;
use warnings;
my @names = ( "user.hostname.com-22222", "SingletonLock" );
foreach my $file (@names)
{
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)
= lstat $file;
printf "lstat: %2d (%.5o) - %s\n", $size, $mode, $file;
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)
= stat $file;
printf "stat: %2d (%.5o) - %s\n", $size, $mode, $file;
}
$ perl stat.pl
lstat: 8 (100644) - user.hostname.com-22222
stat: 8 (100644) - user.hostname.com-22222
lstat: 23 (120755) - SingletonLock
stat: 8 (100644) - SingletonLock
$
答案 1 :(得分:0)
仅将文件名提供给lstat
my $size = (lstat("/home/user/.config/google-chrome/SingletonLock"))[7];
如果您只想获得文件的大小,可以在perl中使用-s
选项
print -s "/home/user/.config/google-chrome/SingletonLock";
或
$filesize = -s $filename;