in reply to stat function used with linux find gives me no data
You don't need to shell out to find, as Perl has the core module File::Find - here's a starting point using core modules only. File::stat, User::pwent, and User::grent give nice objects with accessors instead of the long lists of return values, and Time::Piece has nice extra date/time functionality.
#!/usr/bin/env perl use warnings; use strict; use File::Find 'find'; use Fcntl qw/:mode/; use Cwd 'cwd'; use File::stat; use Time::Piece; use User::pwent; use User::grent; my $dir = shift || cwd; find({ wanted => sub { # filename (basename) is in $_, # current directory is in $File::Find::dir, # full name is in $File::Find::name my $st = lstat($_) or do { warn "failed to stat $File::Find::name: $!"; return }; return unless -f $st; # only regular files print $File::Find::name, " dev=", $st->dev, ", ino=", $st->ino, ", mode=", $st->mode, sprintf(" (perms=%#03o)", S_IMODE($st->mode)), ", nlink=", $st->nlink, ", uid=", $st->uid, " (", getpwuid($st->uid)->name, ")", ", gid=", $st->gid, " (", getgrgid($st->gid)->name, ")", ", rdev=", $st->rdev, ", size=", $st->size, ", atime=", $st->atime, ", mtime=", $st->mtime, " (", gmtime($st->mtime)->datetime, "Z)", ", ctime=", $st->ctime, ", blksz=", $st->blksize, ", blocks=", $st->blocks, "\n"; } }, $dir);
|
|---|