You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.4 KiB
99 lines
3.4 KiB
12 years ago
|
--- durep
|
||
|
+++ durep
|
||
|
@@ -14,6 +14,8 @@
|
||
|
#############################################################################
|
||
|
|
||
|
use Getopt::Long;
|
||
|
+use feature 'switch';
|
||
|
+use Term::ANSIColor qw(:constants);
|
||
|
use File::Basename;
|
||
|
use MLDBM qw(DB_File Storable);
|
||
|
use Fcntl;
|
||
|
@@ -27,6 +29,7 @@
|
||
|
our ($root_node, $filesystem_id, @stats);
|
||
|
our ($opt_help, $opt_version, $opt_textdepth, $opt_hidesize, $opt_showdate, $opt_nosort, $opt_quiet);
|
||
|
our ($opt_savefile, $opt_loadfile, $opt_desc, $opt_collate);
|
||
|
+our ($opt_nocolor);
|
||
|
our ($opt_files, $opt_onefilesystem, $opt_collapsepath, $opt_excludepath, $opt_coalescefiles);
|
||
|
our ($root_dir, $file_count, $dir_count, $next_id);
|
||
|
our ($TYPE_FILE, $TYPE_DIR, $TYPE_EMPTY, $TYPE_COALESCED, $TYPE_COLLAPSED);
|
||
|
@@ -56,6 +59,8 @@
|
||
|
"d|desc=s" => \$opt_desc,
|
||
|
"c|collate=s" => \$opt_collate,
|
||
|
|
||
|
+ "nc|nocolor" => \$opt_nocolor,
|
||
|
+
|
||
|
"f|files" => \$opt_files,
|
||
|
"x|one-file-system" => \$opt_onefilesystem,
|
||
|
"cp|collapse-path=s" => \$opt_collapsepath,
|
||
|
@@ -332,13 +337,58 @@
|
||
|
printf(" [%s%s] ", "#" x $numofchars, " " x (30-$numofchars));
|
||
|
printf("%6.2f%% ", $percent);
|
||
|
printf("%s ", shortDate($entry->{MTIME})) if $opt_showdate;
|
||
|
- printf("%s%s\n", $entry->{NAME}, $entry->{TYPE} & $TYPE_DIR ? "/" : "");
|
||
|
+
|
||
|
+ printColor( $entry ) unless ( $opt_nocolor );
|
||
|
+ printNoColor( $entry ) if ( $opt_nocolor );
|
||
|
if($entry->{TYPE} & $TYPE_DIR) {
|
||
|
printDir($entry, $indent+1) if(!defined $opt_textdepth || ($opt_textdepth > $indent+1));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+sub printColor {
|
||
|
+ my $entry = shift;
|
||
|
+
|
||
|
+ my @tmp = split /\./, $entry->{NAME};
|
||
|
+
|
||
|
+ if ( $entry->{TYPE} & $TYPE_DIR ) {
|
||
|
+ print BLUE, BOLD, $entry->{NAME}."/\n", RESET
|
||
|
+ }
|
||
|
+ else {
|
||
|
+ given ($tmp[$#tmp]) {
|
||
|
+ #executable (bright green)
|
||
|
+ when([ qw(cmd exe com btm bat sh csh) ]) {
|
||
|
+ print BOLD, GREEN, $entry->{NAME}."\n", RESET
|
||
|
+ }
|
||
|
+ #archives / compressed (bright red)
|
||
|
+ when([ qw(tar tgz arj taz lzh zip z Z gz bz2 tbz2 tz deb rpm rar ace zoo cpio 7z rz) ]) {
|
||
|
+ print BOLD, RED, $entry->{NAME}."\n", RESET
|
||
|
+ }
|
||
|
+ #image formats
|
||
|
+ when([ qw(jpg jpeg gif bmp ppm tga xbm xpm tif tiff png mng xcf pcx mpg mpeg m2v avi mkv
|
||
|
+ ogm mp4 mp4v mov qt wmv asf rm rmvb flc fli gl dl) ]) {
|
||
|
+ print BOLD, MAGENTA, $entry->{NAME}."\n", RESET
|
||
|
+ }
|
||
|
+ #misc.
|
||
|
+ when([ qw(pdf ps txt patch diff log tex doc) ]) {
|
||
|
+ print GREEN, $entry->{NAME}."\n", RESET
|
||
|
+ }
|
||
|
+ when([ qw(mp3 wav mid midi au ogg flac aac) ]) {
|
||
|
+ print CYAN, $entry->{NAME}."\n", RESET
|
||
|
+ }
|
||
|
+ default {
|
||
|
+ print $entry->{NAME}."\n", RESET
|
||
|
+ }
|
||
|
+ }
|
||
|
+ }
|
||
|
+}
|
||
|
+
|
||
|
+sub printNoColor {
|
||
|
+ my $entry = shift;
|
||
|
+
|
||
|
+ printf("%s%s\n", $entry->{NAME}, $entry->{TYPE} & $TYPE_DIR ? "/" : "");
|
||
|
+}
|
||
|
+
|
||
|
sub processSizeOption {
|
||
|
my ($size, $temp);
|
||
|
|
||
|
@@ -438,6 +488,9 @@
|
||
|
-d, --desc=<description> give description of save file
|
||
|
-c, --collate=<dir> collate save files in dir for web report
|
||
|
|
||
|
+Color Option:
|
||
|
+ -nc, --nocolor no color output
|
||
|
+ By default durep color outpu
|
||
|
Inclusion Options:
|
||
|
-f, --files do not descend into subdirs, only report files
|
||
|
-x, --one-file-system do not traverse file systems
|