Operating System - OpenVMS
1752569 Members
4964 Online
108788 Solutions
New Discussion юеВ

Re: How to sort all files by date in ascending order

 
jess_14
Advisor

How to sort all files by date in ascending order

Hi all,

Would like to dir and list all the files by date. However seems like the sorting is on alphabetical order instead of the date.

dir *.exe /date

The date is mixed up, not sorting from the oldest to the current 1.

Is there any command that could help? Thanks!
19 REPLIES 19
Robert Gezelter
Honored Contributor

Re: How to sort all files by date in ascending order

Jess,


It is a multi-step process:

- produce the list of all files in a format that can be sorted (e.g., DIRECTORY/BRIEF/NOHEAD/NOTRAIL/DATE/OUTPUT=)

- the resulting output will be a file of two-line entries; reformat the entries into single lines (my preference would be "date" followed by "filename")

- use SORT to sort the resulting file.

This process is far simpler if one temporarily sets the process' time/date format to a collating friendly format (if memory recalls correctly, details are in Section 27.6 of the Programming Concepts manual, available from the HP OpenVMS WWW site at http://www.hp.com/go/openvms.

One could also do this using pipes. My description assumes no particular version of OpenVMS.

- Bob Gezelter, http://www.rlgsc.com
Shriniketan Bhagwat
Trusted Contributor

Re: How to sort all files by date in ascending order

Hi Jess,

Yes, output of $ DIR command is based on the alphabetical order. And you need to write the script to meet your requirement.

Regards,
Ketan
shahina shaik
New Member

Re: How to sort all files by date in ascending order

Hi,

Try using DIRE/DATE=CREATED will have a display in serial order then using the output we can sort it out using script.

Regards,
Shahina
Joseph Huber_1
Honored Contributor

Re: How to sort all files by date in ascending order

We had such a discussion here (or in c.o.v ?) sometime ago.
Results are in one of my DCL procedures:

http://wwwvms.mppmu.mpg.de/vms$common/com/dir_by_date.com
or
http://wwwvms.mppmu.mpg.de/vms$common/com/dir_by_date2.com

OR
look for QDSB* in
http://www.quadratrix.be/downloads
http://www.mpp.mpg.de/~huber
Hein van den Heuvel
Honored Contributor

Re: How to sort all files by date in ascending order

Jesse, did you search at all?

google: +openvms +date +sorted +directory optionally add: +site:itrc.hp.com

finds:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=1190275

which reads..

You can tell sort a magic collating sequence to get the (english) months right.
See old topic (1996) in c.o.v

http://groups.google.com/group/comp.os.vms/search?hl=en&group=comp.os.vms&q=hein+collating_sequence

Or more recently here:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=1095459


And finally, here is a perl 'one liner':

$ perl -e "while (<*.tmp;*>) { $f{$_}=-M } foreach $x (sort {$f{$b}<=>$f{$a}} keys %f){ print qq($x\n)}"

That was sorted on modification date, new to old. For new to old switch the $a and $b around.

Cheers,
Hein.


$ pipe dir/col=1/wid=fil=55/nohead/notrai/date | sort/spec=sort_by_date.sort sys$pipe sys$output

----------- sort_by_date.sort -----------
/collating_sequence=
(
sequence=("AN","EB","AR","PR","AY","UN","UL","UG","EP","CT","OV","EC",
" ","0"-"9"),
fold
)
! second and third letters of each month

/field=(name=year,pos:65,size:4)
/field=(name=month,pos:62,size:2) ! start at SECOND letter
/field=(name=day,pos:58,size:2)
/field=(name=time,pos:70,size:11)
! assume "14-OCT-1986 09:14:46.00" at position 58
/key=(year,descending)
/key=(month,descending)
/key=(day,descending)
/key=(time,descending)
Joseph Huber_1
Honored Contributor

Re: How to sort all files by date in ascending order

Correct link for the quadratix qdsb program:

http://www.quadratrix.be/qdsb.html
http://www.mpp.mpg.de/~huber
P Muralidhar Kini
Honored Contributor

Re: How to sort all files by date in ascending order

Hi Jess,

>> However seems like the sorting is on alphabetical order instead of the date.
Yes, the DIR command always displays the files in the directory in
alphabetical order of filenames. This is the behavior in VMS.

Even if you give a selection criteria such as "/SINCE" or "/BEFORE",
the names would eventually get displayed in alphabetical order of filenames
itself.

>> Is there any command that could help?
No direct command.
As others have suggested, you need to write a command procedure for this.
it would be 2 step procedure.
* First step would be to get the output of DIR command with "/SINCE" or
"/BEFORE" qualifier. Take this output to a file.
* Second step would be to sort the output file based on the date.

Hope this helps.

Regards,
Murali
Let There Be Rock - AC/DC
Joseph Huber_1
Honored Contributor

Re: How to sort all files by date in ascending order

BTW a caveat:

All procedures using the output of a DIRECTORY command for sorting have a problem if file-specifications are longer than the space available in the DIR output (the /width=filename=n).
Directory the wraps the rest of the output to a second line, and sort will be confused.

My dir_by_date2.com avoids this trap (but the output is a bit unusual with the date in front of the file-name).
http://www.mpp.mpg.de/~huber
Joseph Huber_1
Honored Contributor

Re: How to sort all files by date in ascending order

and of course with GNV simply:

ls -lt
ls -ltr

http://www.mpp.mpg.de/~huber