App-dufolder
view release on metacpan or search on metacpan
# use 5.030 ;
use strict ;
use warnings ;
use feature qw [ say state ] ;
use Cwd ;
use File::Spec ;
use Getopt::Std ; getopts '.,:b:i:l:B:G:' , \my %o ;
use List::Util qw[ max sum0 ] ;
use POSIX qw [ strftime ] ;
use Term::ANSIColor qw[ :constants ] ; $Term::ANSIColor::AUTORESET = 1 ;
binmode STDOUT , ':utf8' ;
$o{b} //= 512 ; # stat颿°ã§1åã®ãã¡ã¤ã«ã®ãããã¯æ°ãå¾ãå ´åã«ããããä½åãããããã£ã¹ã¯ãå æãããã¤ãæ°ã«ãªããã
my $optI0 = 0 eq ($o{i} // '' ) ; # -i0ã®æå®ããããå¦ãã inodeã§ä¸è´ãããã®ã¯1åããåãä»ããªãããã«ããã
my $optL0 = 0 eq ($o{l} // '' ) ; # -l0ã®æå®ããããå¦ããstat 颿°ã使ãã lstat 颿°ã使ãããæå®ã
my $optc0 = 0 eq ($o{','}//'' ) ; # -,0ã®æå®ããããå¦ããå鲿³åºåãã§,ã使ããå¦ããæå®ã
$ARGV[0] = '.' if @ARGV == 0 ;
# ç¹æ®ãªé¢æ°
sub d3 ($) ; # æ°ã3æ¡åºåãã«å¤æãããã¨ãã§ããããã«ããã# -,0ãæå®ãããã3æ¡åºåãã«ããªãã
my @files ; # æ¢ç´¢ãããã¡ã¤ã«ãåç´ããã
my @visible ; # éããããã¡ã¤ã«ã®å
¨ä½ã
my $d0 = cwd ;
& getFiles ( $_ , \@files , \@visible ) for @ARGV ;
if ( exists $o{B} ) { & fileDimTable ( $o{'.'} ? @files : @visible ) ; exit }
& prepCommands ( \@files , \@visible , $datetime, my $msg , my $change , my $cmd1 , my $cmd2 ) ; # change ã¯ãã¡ã¤ã«ã®å¤æ´åæ°,
do { say $msg ; exit } unless exists $o{G} ; # -Gã®æå®ãããã°ããã«ç¶ãã
if ( $o{G} =~ /0/ ) { say "$cmd1\n$cmd2" } ; # -Gã«0ãããã°ãã³ãã³ãæã表示
if ( $o{G} =~ /1/ ) { & againCheck ( $change ) and exit } ; # -G ã«1ãããã°ããããåã®ã³ãããã§ãã®ã³ãã³ãã§ã³ãããæ¸ã¿ãªãçµäºã
if ( $o{G} =~ /[12]/ ) { do { my $out2 = qx[$cmd2] ; binmode STDOUT , ':raw' ; say "-- ->", BOLD $out2 //'' } } ; # ã³ãããå®è¡!
exit ;
# ä¸è¨ãæ§é åããããã«åãåºãã颿°
sub getFiles ( $ $$ ) {
state $inodes ;
state $c2 = do { File::Spec -> catfile ( '' , '.' ) } ; # ãã£ã¬ã¯ããªé層ã®åºåãã®ç´å¾ã«ãããããããã¿ã¼ã³ "/."
my @found = split /\n/ , qx [ find $_[0] ] , 0 ; # find ã³ãã³ãã§è¦ã¤ãããã¡ã¤ã«ãæ ¼ç´ã
@found = grep { ! $inodes -> { ( xstat $_ ) [ 1 ] } ++ } @found if ! $optI0 ; # inodeã§éå»ã«ä¸è´ãããã®ã¯é¤å»ãã
push @{ $_[1] } , @found ;
( run in 0.310 second using v1.01-cache-2.11-cpan-eab888a1d7d )