04-15-2009
Sort directory with complex numeric file names
I have a directory with a large number (1000s) of files and I need to produce a file listing all the files in the directory ordered "properly" (properly will be explained shortly).
The files have the following naming pattern:
bul_13_5_228_b.txt
bul_1_3_57.txt
bul_13_6_229.txt
bul_13_6_258.txt
bul_13_6_260.txt
bul_1_3_65.txt
bul_1_3_71.txt
bul_13_7_261.txt
bul_13_7_264.txt
Where field:
1 = "bul" and doesn't change
2 = range from 1 to 30
3 = range from 1 to 12
4 = range from 1 to the 1000s
The sorting pattern I want would sort the 2nd field first, in standard order (1, 2, 3... 10, 11 12...) then the 3rd field (1, 2, 3...) and finally the 4th field.
So, using the file names above as an example, the resulting file would sort like this:
bul_1_3_57.txt
bul_1_3_65.txt
bul_1_3_71.txt
bul_13_5_228_b.txt
bul_13_6_229.txt
bul_13_6_258.txt
bul_13_6_260.txt
bul_13_7_261.txt
bul_13_7_264.txt
I've tried variations of ls | sort and find but cannot seem to get this to work right.
Thanks.
Frank
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I need help writing a bash script for the windows cygwin environment. I'm not sure if bash is the optimal tool. Perhaps perl would be better? Either would work.
I have directories whose names include the date they were created. The directory names are in the format of... (0 Replies)
Discussion started by: siegfried
0 Replies
2. UNIX for Dummies Questions & Answers
Hi,
If I have a directory full of say 100 random files, and I would like to organize them, for example: FILE001, FILE002, FILE003, FILE004, etc.
How would I do this from Terminal, instead of manually changing each file? I'm using Mac OS X, if that makes a difference.
Thank you in advance... (8 Replies)
Discussion started by: andou
8 Replies
3. UNIX for Dummies Questions & Answers
Hi ,
I have a list of files in the directory I want to sort based on the file name.
But in the middle of filename contains the number based on that I need to sort.Could you suggest me on the same?
Example filenames:
/user1$ls
RS.DEV.ISV.F1.RS.REFDATA.DATA... (1 Reply)
Discussion started by: praveen.thumati
1 Replies
4. Shell Programming and Scripting
Sun Solaris Unix Question
Haven't been able to find any solution for this situation. Let's just say the file names listed below exist in a directory. I want the find command to find all files in this directory but at the same time I want to eliminate certain file names or files with certain... (2 Replies)
Discussion started by: 2reperry
2 Replies
5. Shell Programming and Scripting
got it figured out :) (1 Reply)
Discussion started by: sHockz
1 Replies
6. Shell Programming and Scripting
Input file:
100%ABC2 3.44E-12 USA
A2M%H02579 0E0 UK
100%ABC2 5.34E-8 UK
100%ABC2 3.25E-12 USA
A2M%H02579 5E-45 UK
Output file:
100%ABC2 3.44E-12 USA
100%ABC2 3.25E-12 USA
100%ABC2 5.34E-8 UK
A2M%H02579 0E0 UK
A2M%H02579 5E-45 UK
Code try:
sort -k1,1 -g -k2 -r input.txt... (2 Replies)
Discussion started by: perl_beginner
2 Replies
7. Shell Programming and Scripting
Dears,
Would you please help on following bash script:
I want to get the most recent file named alfaYYYYMMDD.gz in one directory:
for example:
in directory /tmp/
ls -ltr
alfa20130715.gz
holding.gz
alfa20130705.gz
sart.txt
merge.txt.gz
alfa20130802.gz
my result shoud be... (1 Reply)
Discussion started by: maxsub
1 Replies
8. UNIX for Dummies Questions & Answers
Hello all,
I have a list of file names in a text document where each file name consists of 4 letters and 3 numbers (for example MACR119). There are 48 file names in the document (they are not in alphabetical or numerical order). I would like to reorder the list of names so that the 48th name is... (3 Replies)
Discussion started by: MDeBiasse
3 Replies
9. Shell Programming and Scripting
Output from zipdiff GNU EAR comparison tool produces output in html divided into three sections "Added, Removed, Changed". I want the output to be sorted by jar or war file.
<html>
<body>
<table>
<tr>
<td class="diffs" colspan="2">Added </td>
</tr>
<tr><td>
<ul>... (5 Replies)
Discussion started by: kchinnam
5 Replies
10. UNIX for Beginners Questions & Answers
Hi all,
I have a text file similar to this:
Text
More text
Etc
Stuff
That
Is
Needed
Etc
Etc
This contains over 70 entries and each entry has several lines of text below the name in square brackets. (5 Replies)
Discussion started by: Scally
5 Replies
HLS(1) General Commands Manual HLS(1)
NAME
hls - list files in an HFS directory
SYNOPSIS
hls [options] [hfs-path ...]
DESCRIPTION
hls lists files and directories contained in an HFS volume. If one or more arguments are given, each specified file or directory is shown;
otherwise, the contents of the current working directory are shown.
OPTIONS
-1 Output is formatted such that each entry appears on a single line. This is the default when stdout is not a terminal.
-a All files and directories are shown, including "invisible" files, as would be perceived by the Macintosh Finder. Normally invisible
files are omitted from directory listings.
-b Special characters are displayed in an escaped backslash notation. Normally special or non-printable characters in filenames are
replaced by a question mark (?).
-c Sort and display entries by their creation date, rather than their modification date.
-d List directory entries themselves rather than their contents. Normally the contents are shown for named directories on the command-
line.
-f Do not sort directory contents; list them in the order they appear in the directory. This option effectively enables -a and -U and
disables -l, -s, and -t.
-i Show the catalog IDs for each entry. Every file and directory on an HFS volume has a unique catalog ID.
-l Display entries in long format. This format shows the entry type ("d" for directory or "f" for file), flags ("i" for invisible),
file type and creator (four-character strings for files only), size (number of directory sub-contents or file resource and data
bytes, respectively), date of last modification (or creation, with -c flag), and pathname. Macintosh "locked" files are indicated by
"F" in place of "f".
-m Display entries in a continuous format separated by commas.
-q Replace special and non-printable characters in displayed filenames with question marks (?). This is the default when stdout is con-
nected to a terminal.
-r Sort entries in reverse order before displaying.
-s Show the file size for each entry in 1K block units. The size includes blocks used for both data and resource forks.
-t Sort and display entries by time. Normally files will be sorted by name. This option uses the last modification date to sort unless
-c is also specified.
-x Display entries in column format like -C, but sorted horizontally into rows rather than columns.
-w width
Format output lines suitable for display in the given width. Normally the width will be determined from your terminal, from the
environment variable COLUMNS, or from a default value of 80.
-C Display entries in column format with entries sorted vertically. This is the default output format when stdout is connected to a
terminal.
-F Cause certain output filenames to be followed by a single-character flag indicating the nature of the entry; directories are fol-
lowed by a colon (:) and executable Macintosh applications are followed by an asterisk (*).
-N Cause all filenames to be output verbatim without any escaping or question-mark substitution.
-Q Cause all filenames to be enclosed within double-quotes (") and special/non-printable characters to be properly escaped.
-R For each directory that is encountered in a listing, recursively descend into and display its contents.
-S Sort and display entries by size. For files, the combined resource and data lengths are used to compute a file's size.
-U Do not sort directory contents; list them in the order they appear in the directory. On HFS volumes, this is usually an alphabetical
case-insensitive ordering, although there are some idiosyncrasies to the Macintosh implementation of ordering. This option does not
affect -a, -l, or -s.
SEE ALSO
hfsutils(1), hcd(1), hpwd(1), hdir(1), hcopy(1)
FILES
$HOME/.hcwd
AUTHOR
Robert Leslie <rob@mars.org>
HFSUTILS
14-Jan-1997 HLS(1)