App-Bin4TSV
view release on metacpan or search on metacpan
scripts/updir view on Meta::CPAN
#!/usr/bin/perl
use 5.001 ; use strict ; use warnings ;
use Cwd qw[ cwd getcwd abs_path chdir]; # getcwd ã使ãçº
use Encode qw[ encode_utf8 decode_utf8 ] ;
use List::Util qw[ minstr maxstr min ] ;
use Getopt::Std ; getopts 'dfg:lq' ,\my %o ;
$o{g} //= 1 ; # ä¸ã«ä¸ãããã¨ã«ããã®é層ã«ãããã¡ã¤ã«ã®ååãåãåºããã..ãæãã§ä¸¡ç«¯ã®ããããããä½åãåãåºãã
sub seeAround ( ) ;
sub moveUp ( ) ;
#sub getcwd ( @ ) ;
#*getcwd = *cwd ;
my $status = chdir $ARGV[0] if defined $ARGV[0] ;
print "Cannot change directory into $ARGV[0], so the current directory is set to process.\n" if defined $status && ! $status ;
my $dir0 = getcwd ; # æåã®ãã£ã¬ã¯ããª
my $len = length $dir0 ; # å·¦ã®åãæããããã«ã空ç½ã§åããããã«é·ããåãåºã
my $spl = ' ' x $len ;
do {
my @x = @{ seeAround () } ;
$x[0] = substr $x[0] . $spl , 0 , $len ; # å·¦ããæ±ºã¾ã£ãã®é·ãã§åã
print join ( "\t" , @x ) , "\n" ;
#print getcwd, "\n" ;
}
while ( & moveUp ) ;
sub seeAround ( ) {
my $dir = getcwd ;
my @files = sort glob '*' ;
@files = grep { -d } @files if $o{d} ;
@files = grep { -f } @files if $o{f} ;
@files = grep { -l } @files if $o{l} ; # symbolic link files
grep { $_ .= '/' if -d $_ } @files ; # ãã£ã¬ã¯ãã«ã§ããã°æ«å°¾ã«/(ã¹ã©ãã·ã¥)ãä»å ã
my $fn = scalar @files ;
#grep $_ = decode_utf8 quotemeta encode_utf8 $_ , @files if $o{q} ; # -q
my @files1 = splice @files , 0 , $o{g} ;
my @files2 = splice @files , - min ( $o{g}, scalar @files ) , $o{g} ;
#print "$dir\t$f1\t$f2\n" ;
return [ $dir , $fn , ! @files2 ? "@files1" : ! @files ? "@files1 @files2" : "@files1 .. @files2" ] ;
}
sub moveUp ( ) {
my $dir0 = getcwd ;
my $status = chdir '..' ; # <-- - ã·ã³ããªãã¯ãªã³ã¯ããã¯å§ããã¨ãUnixã®cd .. ã¨ç°ãªãã絶対ãã¹ãä¸ãã£ã¦ãã¾ãã
my $dir1 = getcwd ;
return undef if $dir0 eq $dir1 ;
return $dir1 ;
}
## ãã«ãã®æ±ã
sub VERSION_MESSAGE {}
sub HELP_MESSAGE {
use FindBin qw[ $Script ] ;
$ARGV[1] //= '' ;
open my $FH , '<' , $0 ;
while(<$FH>){
s/\$0/$Script/g ;
print $_ if s/^=head1// .. s/^=cut// and $ARGV[1] =~ /^o(p(t(i(o(ns?)?)?)?)?)?$/i ? m/^\s+\-/ : 1;
}
close $FH ;
exit 0 ;
}
=encoding utf8
=head1
updir
ä»ãããã£ãªã¯ããªããä¸ã®é層ã«åãã£ã¦é 次ãã£ã¬ã¯ããªãä¸ãã£ã¦è¡ã£ã¦ã
æ§åãè¦ãã
-g N ; åºåã«ç¾ããåãã£ã¬ã¯ããªã«ããããã¡ã¤ã«ç¾¤ã®ååæååã®ç¯å²ã示ãã®ã«ã両端ã®ä½åãåãåºãã
-d : only directory files
-f ; only plain files
-l ; only symbolic link files
ãã³ã :
表示ã®åè¡ãéé ã«ããã«ã¯ updir | tac ã¨ããã
éçºã¡ã¢ :
* ã·ã³ããªãã¯ãªã³ã¯ããå§ãã¦ãã絶対ãã¹ã§ä¸ã«ä¸ãã£ã¦è¡ãåé¡ãããããªãã·ã§ã³ã§è§£æ±ºå¯è½ã¨ãããã
=cut
( run in 1.218 second using v1.01-cache-2.11-cpan-39bf76dae61 )