#!/usr/bin/perl use MDK::Common; if (@ARGV != 1) { die "$0 \n"; } sub mtime { my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = lstat $_[0]; $mtime; } my %colors; foreach (split /:/, $ENV{LS_COLORS}) { /(.*)=(.*)/ and $colors{$1} = $2; # print "$1: \033[$2m$1\033[0;39m\n"; } my %extensions; foreach (keys %colors) { /^*(\..*)/ or next; $extensions{$1} = $colors{$_}; } sub col { my ($f, $orig_dir) = @_; my $col; $orig_dir && $f =~ /^\.\./ and chdir $orig_dir; -e $f or $col = $colors{or}; $f =~ /\Q$_\E$/ and $col = $extensions{$_} foreach keys %extensions; $col ||= -d $f ? $colors{di} : -l $f ? $colors{ln} : -S $f ? $colors{so} : -p $f ? $colors{pi} : -x $f ? $colors{ex} : ''; #- emulates ls -F my $a = -d $f ? '/' : -S $f ? '=' : -p $f ? '|' : -x $f ? '*' : ''; $f =~ /\Q$a\E$/ and $a = ''; chdir $ENV{PWD}; "\033[${col}m$f\033[0;39m$a"; } foreach (sort { $a->[1] <=> $b->[1] } map { [ $_, mtime($_) ] } chomp_(`find $ARGV[0]`)) { my $f = $_->[0]; print scalar(localtime($_->[1])), " ", col($f); if (-l $f) { print " -> ", col(readlink($f), dirname($f)), "\n"; } else { print "\n"; } }