well artist gave essentially a un*x golf solution. I'll recast it and comment on a couple tricks.
first 'echo */' (or print) is a good way of getting directories if you are using a posix shell.
% echo dir*/ | xargs -n1 | sort -rnt- -k2,3 | perl -lne 'print if $. = +=2'
the 'echo */ | xargs -n1' can be seen as a poor man's transpose. It is useful if you know your paths! spaces don't work directly ...and xargs understands some quoting
In the end it is safer to use:
cheers --stephan% NL=' > ' % (IFS="$NL"; for i in dir*/; do echo $i; done) | > sort -rnt- -k2,3 | perl -lne 'print if $. ==2' % steph@ape (/home/stephan/t) % % cat dirdata dir-100-1 dir-100-10 dir-100-2 dir-100-9 dir-100-99 dir-2-1 dir-28-1 dir-29-1 dir-29-2 dir-30-1 dir-3-1 % steph@ape (/home/stephan/t) % % cat dirdata | sort -nt- -k2,3 dir-2-1 dir-3-1 dir-28-1 dir-29-1 dir-29-2 dir-30-1 dir-100-1 dir-100-10 dir-100-2 dir-100-9 dir-100-99 % steph@ape (/home/stephan/t) % % cat dirdata | sort -rnt- -k2,3 | perl -lne 'print if $. == 2' dir-100-9
In reply to Re: Command line file sorting
by sgt
in thread Command line file sorting
by swkronenfeld
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |