¿Cómo obtener el propietario del archivo en AIX sin alterar la salida de ls?

¿Cómo obtener el propietario del archivo en AIX sin alterar la salida de ls?

¿Cómo podría yoseguramente¿Obtener el propietario de un archivo en AIX? Por confiable, no quiero analizar el resultado de ls. En Linux, simplemente haría un stat --printf=%U foo, pero estoy trabajando en AIX 6.1 y 7.1. Sé que puedo hacerlo istat, pero como no hay ninguna --printfopción en AIX istat, aún tendría que modificar la salida con grepy awk, por lo tanto, no es tan deseable. En otras palabras, ¿cómo puedo emular Linux stat --printf=%U foousando sólo las utilidades principales de AIX?

Respuesta1

Este es un script que escribí hace un tiempo para obtener una utilidad similar a stat(1) en AIX. ¡Acabo de agregar %U! Me resultó más útil usar la opción -c, que se comporta de manera ligeramente diferente a --printf. Incluye una práctica copia local de la matriz de estadísticas de Perl como bloque de comentarios.

#!/usr/bin/env perl -w
# emulate GNU coreutils stat command in a limited way
# -- only implemented a subset of the stat() options

use strict;
use Getopt::Std;
our $opt_c;

getopts('c:') or die "Usage: $0 [ -c (%n %i %u %g %s %U %X %Y %Z) ] file ...";
# default format is empty (not useful, but avoids 'undef' errors later)
$opt_c |= '';

for (@ARGV) {
  my @s = stat;
  next unless @s; # silently fail on to the next file
  my $p = $opt_c; # make a copy of the format string to mangle for each file

  # mangle and print
  $p =~ s/%n/$_/g;
  $p =~ s/%i/$s[1]/g;
  $p =~ s/%u/$s[4]/g;
  $p =~ s/%g/$s[5]/g;
  $p =~ s/%s/$s[7]/g;
  $p =~ s/%U/getpwuid($s[4])/eg;
  $p =~ s/%X/$s[8]/g;
  $p =~ s/%Y/$s[9]/g;
  $p =~ s/%Z/$s[10]/g;
  print "$p\n";

  #                 0 dev      device number of filesystem
  #                 1 ino      inode number
  #                 2 mode     file mode  (type and permissions)
  #                 3 nlink    number of (hard) links to the file
  #                 4 uid      numeric user ID of file's owner
  #                 5 gid      numeric group ID of file's owner
  #                 6 rdev     the device identifier (special files only)
  #                 7 size     total size of file, in bytes
  #                 8 atime    last access time in seconds since the epoch
  #                 9 mtime    last modify time in seconds since the epoch
  #                10 ctime    inode change time in seconds since the epoch (*)
  #                11 blksize  preferred block size for file system I/O
  #                12 blocks   actual number of blocks allocated

}

información relacionada