#!/bin/sh # git-s -- selection-friendly git-status git status -s | perl -ne ' push @{$x{$1}}, $2 if /^(.). (.*)/; push @{$y{$1}}, $2 if /^.(.) (.*)/; END { delete $x{"?"}; delete $x{" "}; delete $y{" "}; for (["index" => \%x], ["tree" => \%y]) { ($n, $h) = @$_; print "$n:" if values %$h; for (sort keys %$h) { print " $_ "; print " $_" for @{$h->{$_}}; print "\n"; } } } '