Finding consecutive numbers in version names on a txt file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Finding consecutive numbers in version names on a txt file
# 1  
Old 03-11-2011
Finding consecutive numbers in version names on a txt file

Hi all.

I have a directory which contains files that can be versioned. All the files are named according to a pattern like this:

TEXTSTRING1-001.EXTENSION
TEXTSTRING2-001.EXTENSION
TEXTSTRING3-001.EXTENSION
...
TEXTSTRINGn-001.EXTENSION

If a file is versioned, a file called

TEXTSTRINGn-002.EXTENSION

would be created, then a 003, etc...

What I want is, working with an ordered list of the files on a txt file, to extract the names of the files who have been versioned so I can move the older ones to another dir. That is, for a given line:

TEXTSTRINGn-j.EXTENSION

if the next line is
TEXTSTRINGn-(j+1).EXTENSION

then return the first of the two lines.

Could you help me with it? I'm not all that knowledgeable of perl to get it right, but I really guess it's just a simple script.

Regards.
# 2  
Old 03-11-2011
Please post a sample input and expected output.
It will help to understand the needs in a better way.
# 3  
Old 03-12-2011
Ok, a sample. Say this is the text file resulting from the sorted list of the directory:

abcd-001.pdf
dfcd-003.pdf
grdr-001.pdf
grdr-002.pdf
hhgt-001.pdf
htfr-001.pdf
htfr-002.pdf
htfr-003.pdf
htfr-004.pdf
jkdyr-001.pdf
tasd-018.pdf
tasd-019.pdf
yrdf-003.pdf
zgdr-001.pdf


As you see, the file grdr-xxx has been versioned once, and so there's the 001 and 002 versions, and the htfr-xxx three times, so we have from 001 to 004.
The file tasd has also been versioned and we have the 018 and 019 version because in previous executions the 001 to 017 have already been deleted.

What I want is to extract from a file like this the old versions. That is, from the sample above, I want to return the following entries:

grdr-001.pdf
htfr-001.pdf
htfr-002.pdf
htfr-003.pdf
tasd-018.pdf

so I can move or delete them and keep only the last version.
# 4  
Old 03-12-2011
Assuming there is only one dash and one dot in the file name, then
Code:
awk '$1==p{print f}{f=$0;p=$1}' FS='[-.]'

# 5  
Old 03-13-2011
Quote:
Originally Posted by binlib
Assuming there is only one dash and one dot in the file name, then
Code:
awk '$1==p{print f}{f=$0;p=$1}' FS='[-.]'

Let's see if I read this right, as it's a bit obscure code to me:

Code:
$1==p{print f}  # Print f if $1 is equal to p
{f=$0;p=$1}  # Then store the entire line in f and up to the first dash in p
FS='[-.]'  # Last, select dash and dot as character separators.

Is it so? If it is, then a couple of things: I want to be sure that the numbers are consecutive, and there is more than one dash in the files, but the number is always the last three digits before the dot.

I'll try to work out with this tomorrow, as now I have an idea of where to begin, and post it if I get it working. I'll have to:

* Separate the name in three fields:
khdhdh-ywwwnds-dhs-001.ext

The first would be khdhdh-ywwwnds-dhs
The second 001
the third the extension

* Then compare them the way binlib suggests.

Ok, tomorrow at work I'll give it a try and see what I come with.
# 6  
Old 03-13-2011
Code:
find . -type f -name "*.pdf" |sort -rn |awk -F \-  'a[$1]++'

# 7  
Old 03-14-2011
Code:
awk -F'[-.]' '$1==p&&$(NF-1)==n {print f}; {n=$(NF-1)+1; p=$1;f=$0}' infile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Delete files whose file names are listed in a .txt file

hi, I need a help. I used this command to list all the log files which are for more than 10 days to a text file. find /usr/script_test -type f -mtime +10>>/usr/ftprm.txt I want all these files listed in the ftprm.txt to be ftp in another machine and then rm the files. Anyone can help me... (8 Replies)
Discussion started by: kamaldev
8 Replies

2. UNIX for Dummies Questions & Answers

finding overlapping names in different txt files

Dear Gurus, I have 57 tab-delimited different text files, each one containing entries in 3 columns. The first column in each file contains names of objects. Some names are present in more than one file. I would like to find those names and store them in a separate text file, preferably with a... (6 Replies)
Discussion started by: Unilearn
6 Replies

3. Shell Programming and Scripting

Print numbers along with file names.

Hi All, I have some thousand files with names like 1.syl, 2.syl, 5.syl etc. These files contain one sentence each. I want to store all those sentences along with the file ID that is 1, 2, 5 with the sentences they contain. For example, 1.syl has this is a test line 2.syl has ... (3 Replies)
Discussion started by: shoaibjameel123
3 Replies

4. Shell Programming and Scripting

Finding consecutive same words in a file

Hi All, I tried this but I am having trouble formulating this: I have a file that looks like this (this is a sample file words can be different): network router frame network router computer card host computer card One can see that in this file "network" and "router" occur... (3 Replies)
Discussion started by: shoaibjameel123
3 Replies

5. UNIX for Dummies Questions & Answers

Extract numbers from .txt file

I need to extract all the p-value numbers and the rho numbers from a .txt file and write them as coma separated values in a new file. Ideally I would get two files in the end, one for p- values and one for rho. Any suggestions? I appreciate your help!!! The .txt file looks essentially like this... (5 Replies)
Discussion started by: eggali
5 Replies

6. UNIX for Advanced & Expert Users

How to select only those file names whose name contains only numbers

Hi Guru's, Before writing to this forum I have searched extensively on this forum about my problem. I have to write a shell script which takes out only those file names from the given directory which contains only numbers. For example, In the given directory these files are present: ... (4 Replies)
Discussion started by: spranm
4 Replies

7. UNIX for Dummies Questions & Answers

How to select only those file names whose name contains only numbers.

Hi Guru's, Before writing to this forum I have searched extensively on this forum about my problem. I have to write a shell script which takes out only those file names from the given directory which contains only numbers. For example, In the given directory these files are present: ... (0 Replies)
Discussion started by: spranm
0 Replies

8. Shell Programming and Scripting

Inserting a range of consecutive numbers into a text file

I have a text file in the following format .... START 1,1 2,1 3,1 .. .. 9,1 10,1 END .... I want to change to the output to .... START 1,1 2,1 3,1 .. (4 Replies)
Discussion started by: VNR
4 Replies

9. Shell Programming and Scripting

how to remove files with only numbers as file names?

Hi all, I have a bunch of files that are named like 12543, 467249877, etc all over some directories.These files are named only with numbers, they dont have any letters or special characters in their file names. Could you please help me out and give me some command/script to remove only those... (6 Replies)
Discussion started by: praveen_indramo
6 Replies

10. Shell Programming and Scripting

[Urgent]how to print the file names into a txt file???

HI, I have a folder with some 120 files...i just want to print all the file filenames(not the content or anything else) onto a file say .txt. please help me with this command Thanks a lot. (15 Replies)
Discussion started by: kumarsaravana_s
15 Replies
Login or Register to Ask a Question