Find filenames with three digits and add zeros to make five digits


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find filenames with three digits and add zeros to make five digits
# 1  
Old 01-18-2012
Find filenames with three digits and add zeros to make five digits

Hello all! I've looked all over the internet and this site and have come up a loss with an easy way to make a bash script to do what I want to do. I have a file with a naming convention as follows:

2012-01-18 string of words here 123.jpg
2012-01-18 string of words here 1234.jpg
2012-01-18 string of words here 12345.jpg

What I am trying to do is search through all my files and folders within a directory and rename all the files so they have a five digit number instead of a three or four digit number with any empty space filled by a zero.

2012-01-18 string of words here 00123.jpg
2012-01-18 string of words here 01234.jpg
2012-01-18 string of words here 12345.jpg

As seen above, some files have three digits, some four, and some five. Is there any easy way to achieve this? I've been using the find command along with rename traversing folder by folder to change all my files into this format. Smilie Any help would be greatly appreciated. SmilieSmilie
# 2  
Old 01-18-2012
Probably lots of ways to do this. You can pipe the output of a find command through this small awk which will generate the mv commands.

Code:
find . -type f | awk '{ o = $0; split( $NF, a, "." ); $(NF)=sprintf( "%05d.%s", a[1], a[2] ); printf( "mv \"%s\" \"%s\"\n", o, $0 ); }'

You can then pipe the output through your favorite shell to actually execute the moves (verify that they look good, and no undesired file is being affected. It's generic so it will handle any suffix (.jpg, .png, etc.). It does assume that in the bag of words in the middle, the last word and the number are separated by a space.
This User Gave Thanks to agama For This Post:
# 3  
Old 01-18-2012
Awesome agama! That worked beautifully! The files with five digits were ignored as the filename was the same as destination name. I wish that I had gotten into *nix programming much earlier so I would know this stuff better, but now just trying to self teach myself these fun little things. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

sed / awk script to delete the two digits from first 3 digits

Hi All , I am having an input file as stated below 5728 U_TOP_LOGIC/U_CM0P/core/u_cortexm0plus/u_top/u_sys/u_core/r03_q_reg_20_/Q 011 611 U_TOP_LOGIC/U_CM0P/core/u_cortexm0plus/u_top/u_sys/u_core/r04_q_reg_20_/Q 011 3486... (4 Replies)
Discussion started by: kshitij
4 Replies

2. Shell Programming and Scripting

Find number of digits in a word

HI, Can you tell me how to find the number of digits in a word. $cat data.txt +123456ad 87645768 Output should be 6 8 (5 Replies)
Discussion started by: ashwin3086
5 Replies

3. Shell Programming and Scripting

Regex find first 5-7 occurrences of a set of digits within a string

Using these strings as an example: <a onclick="doShowCHys=1;ShowWindowN(0,'/daman/man.php?asv4=145148&amp;playTogether=True',960,540,943437);return false;" title=""> <a onclick="doShowCHys=1;ShowWindowN(0,'/daman/man.php?asv4=1451486&amp;playTogether=True',960,540,94343);return false;" title=""> <a... (12 Replies)
Discussion started by: metallica1973
12 Replies

4. Shell Programming and Scripting

find sequence of 13 digits in file

I need to extract all sequences of thirteen digits in a file, e.g. 4384976350232, and at the same time not extract sequences with 14 or more digits. How do I do that using sed, awk or something built into bash? (8 Replies)
Discussion started by: locoroco
8 Replies

5. Shell Programming and Scripting

Use match() in nawk to find digits in number

Hi, I just need to check whether number of digits in a phone number is 10 or not. If I am not wrong regex will be: {9} I have to use this inside nawk as this is a small portion of a big program. nawk ' BEGIN { RS="";FS=";"; regex="{9}"; } { for (i=1;i<=NF;i++) { if... (6 Replies)
Discussion started by: shekhar2010us
6 Replies

6. Shell Programming and Scripting

help: single digits inflated to 2 digits

Hi Folks Probably an easy one here but how do I get a sequence to get used as mentioned. For example in the following I want to automatically create files that have a 2 digit number at the end of their names: m@pyhead:~$ for x in $(seq 00 10); do touch file_$x; done m@pyhead:~$ ls file*... (2 Replies)
Discussion started by: amadain
2 Replies

7. Shell Programming and Scripting

find the last digits of a string

print out 201 in following string, Please note the chars before 201 are random, no fixed format. ua07app201 (20 Replies)
Discussion started by: honglus
20 Replies

8. Shell Programming and Scripting

Formatting digits

I want to check the argument in KSH. If the user type in the prompt 'find 3' it will format 3 to 003 to match the data in the text file. Same as with 10 to 010. Always begins with 0. eg. >find 3 Output: 003 >find 30 Output: 030 (7 Replies)
Discussion started by: harry0013
7 Replies

9. Shell Programming and Scripting

Write a shell program to find the sum of alternate digits in a given 5-digit number

Hi Can any one please post the answer for the above program.................. (4 Replies)
Discussion started by: banta
4 Replies

10. Shell Programming and Scripting

How to cut last 10 digits off

Hi I'm new to this. I need to cut off the last 10 digits from a line. I've used awk {'print $4'} filename.txt | cut -c 32-42 but this does not guarantee only the last 10 characters. Please help. Thanks. Sara (4 Replies)
Discussion started by: psarava
4 Replies
Login or Register to Ask a Question