rename multiple filename.45267.txt to >> filename.txt


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting rename multiple filename.45267.txt to >> filename.txt
# 1  
Old 01-26-2009
Lightbulb rename multiple filename.45267.txt to >> filename.txt

i have several thousand files and in subdirs that are named

file.46634.txt
budget.75346.pdf

etc

i want to remove the number but retain the extension.

it is always a 5 digit.

thanks.
# 2  
Old 01-26-2009
Okay but will you have collisions - budget.12345.pdf and budget.34567.pdf will both end up as budget.pdf?
# 3  
Old 01-26-2009
recommended approach

I recommend taking this problem in 3 steps.

Create list.
Create mv commands.
Run mv commands.

If you try to do everything at once, you can encounter many
unexpected results.

So, step1: create a list of the files you want to rename:

find $PWD -type f -print |
grep '[0-9][0-9][0-9][0-9][0-0]' > file_list

Next, inspect the file_list file and make sure that you only grabbed
what you expect.

Then run this script:

awk '{ print $1, $1 }' file_list |
while read a b; do

echo $b | sed -e 's/[0-9][0-9][0-9][0-9][0-9]\.\(...\)$/\1/' | read c
echo /bin/mv $a $c
done |
tee step2

What this does is create a list of mv commands and stores then in step2.
After inspecting step2, to make sure it looks correct...
Run it:

ksh step2

there you go.
# 4  
Old 01-29-2009
hey thanks for that. there is a slight proble however. spaces in filenames are not considered. how to fix that?

thanks again.
# 5  
Old 01-29-2009
Quote:
Originally Posted by jason7
hey thanks for that. there is a slight proble however. spaces in filenames are not considered. how to fix that?

thanks again.
Aurgh. My solution was kind of stupid.... Try this:

cat file_list |
while read a; do

c=$( echo "$a" | sed -e 's/[0-9][0-9][0-9][0-9][0-9]\.\(...\)$/\1/' )
echo /bin/mv \"$a\" \"$c\"
done |
tee step2


Then, inspect step2 and run it:

/bin/ksh step2
# 6  
Old 01-29-2009
Actually, this might work even better.
echo's tend to swallow up consecutive spaces.


Code:
cat file_list |
while read a; do

#-------------------------------------------------------
### some ksh variable editting that "greedy" removes from
### beginning to last /
#-------------------------------------------------------
 
c=${a##*/}
echo /bin/mv \"$a\" \"$c\"
done |
tee step2

# 7  
Old 01-29-2009
thank you!

for you
Image
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Extract the filename and write to .txt

I'm new to this forum and also to UNIX scripting. I need a command to extract the filename from the path and write to .txt file. Thanks in advance for your guidance. (23 Replies)
Discussion started by: Ram Kumar_BE
23 Replies

2. Shell Programming and Scripting

Replacing .dat.gz to .txt.gz in filename

Hi, I tried below method; mv -v /oracle1/scr/tilki/willsendtilkiNew/VOICE-MO_$nfname.gz \ $(echo /oracle1/scr/tilki/willsendtilkiNew/VOICE-MO_$nfname.gz | tr 'dat' 'txt'); nfame variable has the string "dat" . I need to rename files like below; ASIS: 20140902103700_100319.dat.gz... (8 Replies)
Discussion started by: snr_silencer
8 Replies

3. Windows & DOS: Issues & Discussions

Check dir for overly path+filename and list in txt

Well since Windows always laments over some of my files having a too long "path+filename" and it gets in the way of copying complete directory structures I would love to have a DOS Script that helps me with finding those. I already tried DCSoft Long Filename Finder but that is neither DOS based... (3 Replies)
Discussion started by: pasc
3 Replies

4. UNIX for Dummies Questions & Answers

Add a new column to txt file containing filename

I would like help adding a new column to a large txt file (~10MB) that contains the filename. I have searched other posts but have not found an adequate solution. I need this extra column so I can concatenate >100 files and perform awk searches on this large file. My current txt file look... (4 Replies)
Discussion started by: kellywilliams
4 Replies

5. UNIX for Dummies Questions & Answers

Move txt file to with current date appended to filename

I have multiple txt files which begin with the word "orders" in folder C:\source. I need to move the files to folder C:\dest and rename them to "process_<date>_<count>" So for example , if there are 3 files ordersa.txt , ordersb.txt and ordersc.txt in C:\source , after running the script I want... (7 Replies)
Discussion started by: johannd
7 Replies

6. Shell Programming and Scripting

Move txt file to with current date appended to filename

I have multiple txt files which begin with the word "orders" in folder C:\source. I need to move the files to folder C:\dest and rename them to "process_<date>_<count>" So for example , if there are 3 files ordersa.txt , ordersb.txt and ordersc.txt in C:\source , after running the script I want... (1 Reply)
Discussion started by: johannd
1 Replies

7. Shell Programming and Scripting

How to unzip Filename.txt.Z

Hii I am having a file in Unix which is filename.txt.Z How can i take of the Z to read the file Please help Regards Laxmi (2 Replies)
Discussion started by: laxmi1166
2 Replies

8. Shell Programming and Scripting

[PERL] Cannot stat or move filename - £££F3AERO££.txt

Scenario: Users drop files into a directory which is regularly polled by my PERL process. On detecting a file my process will move it from the poll dir to a working directory. A user created a file with a £ symbol in the filename and my process now fails. e.g £££F3AERO££.txt ... (1 Reply)
Discussion started by: thefal9
1 Replies

9. Shell Programming and Scripting

write filename as first line in a txt file

Could anyone very kindly help me a simple way to perform the - perhaps - very trivial task of writing the name of a file as first line of that file which is in txt format? And would be possible to do this recursively for some thousands files in the XY directory? And, again, add to the simple... (3 Replies)
Discussion started by: mjomba
3 Replies

10. Shell Programming and Scripting

Multiple file rename (change in filename in unix with single command

Dear All, Please help ! i ham having 300 file with E.G. PMC1_4567.arc in seq. like PMC1_4568.arc,PMC1_4569.arc ...n and so on.. i want all those file to be rename like PMC_4567.arc ,PMC_4568.arc .. mean i want to remove 1 from first file name .. pls help.. (6 Replies)
Discussion started by: moon_22
6 Replies
Login or Register to Ask a Question