How do I add zero padding to filenames that already have numbers in them? [duplicate]
![Creative The name of the picture](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO9GURib1T8z7lCwjOGLQaGtrueEthgQ8LO42ZX8cOfTqDK4jvDDpKkLFwf2J49kYCMNW7d4ABih_XCb_2UXdq5fPJDkoyg7-8g_YfRUot-XnaXkNYycsNp7lA5_TW9td0FFpLQ2APzKcZ/s1600/1.jpg)
![Creative The name of the picture](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYQ0N5W1qAOxLP7t7iOM6O6AzbZnkXUy16s7P_CWfOb5UbTQY_aDsc727chyphenhyphen5W4IppVNernMMQeaUFTB_rFzAd95_CDt-tnwN-nBx6JyUp2duGjPaL5-VgNO41AVsA_vu30EJcipdDG409/s400/Clash+Royale+CLAN+TAG%2523URR8PPP.png)
up vote
7
down vote
favorite
This question already has an answer here:
Renaming hundreds of files at once for proper sorting
6 answers
I used Sound Juicer to rip a CD of audio for a language learning book so that I could listen to them on my Android. However, Sound Juicer seems to only have the option of numbering files without leading zeros. Like this:
track_1.mp3
track_10.mp3
track_11.mp3
This leads to some confused ordering on my music player. So, I want to add some zeros to the name, so that they're ordered properly, like this:
track_01.mp3
track_02.mp3
track_03.mp3
How do I accomplish this? I tried using GPRename, but while it has the ability to add numbers, it doesn't seem to have any options for adding leading zeros.
Is there a better program or something I can do at the command line?
rename batch-rename
marked as duplicate by Oli⦠Jul 28 '14 at 14:11
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
 |Â
show 4 more comments
up vote
7
down vote
favorite
This question already has an answer here:
Renaming hundreds of files at once for proper sorting
6 answers
I used Sound Juicer to rip a CD of audio for a language learning book so that I could listen to them on my Android. However, Sound Juicer seems to only have the option of numbering files without leading zeros. Like this:
track_1.mp3
track_10.mp3
track_11.mp3
This leads to some confused ordering on my music player. So, I want to add some zeros to the name, so that they're ordered properly, like this:
track_01.mp3
track_02.mp3
track_03.mp3
How do I accomplish this? I tried using GPRename, but while it has the ability to add numbers, it doesn't seem to have any options for adding leading zeros.
Is there a better program or something I can do at the command line?
rename batch-rename
marked as duplicate by Oli⦠Jul 28 '14 at 14:11
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
My answer on the duplicate should answer this pretty completely in a single command.
â Oliâ¦
Jul 28 '14 at 14:13
1
@Oli, although your answer works here too, the question actually is different, and other answers there do not necessarily work here, because of the precedingtrack_
string. Mine needed editing anyway to make it work on this question.
â Jacob Vlijm
Jul 28 '14 at 15:58
@Oli, Jacob is correct. I had looked at similar solutions to the question you've linked to, but because of the particular naming scheme I was dealing with, it wasn't obvious that any file numbering solution would work. Marking this as duplicate is presuming a level of knowledge that precludes the purpose of asking questions.
â Questioner
Jul 28 '14 at 23:51
1
also @muru, the fact that you can produce an answer that works on more than one question does not make the questions equal. See my reaction on meta meta.askubuntu.com/questions/11622/are-these-duplicates
â Jacob Vlijm
Jul 29 '14 at 18:35
1
@muru Off-topic to the duplication issue, that line would munch the extension. There is certainly a way similar to that which would work though.
â Oliâ¦
Jul 30 '14 at 15:31
 |Â
show 4 more comments
up vote
7
down vote
favorite
up vote
7
down vote
favorite
This question already has an answer here:
Renaming hundreds of files at once for proper sorting
6 answers
I used Sound Juicer to rip a CD of audio for a language learning book so that I could listen to them on my Android. However, Sound Juicer seems to only have the option of numbering files without leading zeros. Like this:
track_1.mp3
track_10.mp3
track_11.mp3
This leads to some confused ordering on my music player. So, I want to add some zeros to the name, so that they're ordered properly, like this:
track_01.mp3
track_02.mp3
track_03.mp3
How do I accomplish this? I tried using GPRename, but while it has the ability to add numbers, it doesn't seem to have any options for adding leading zeros.
Is there a better program or something I can do at the command line?
rename batch-rename
This question already has an answer here:
Renaming hundreds of files at once for proper sorting
6 answers
I used Sound Juicer to rip a CD of audio for a language learning book so that I could listen to them on my Android. However, Sound Juicer seems to only have the option of numbering files without leading zeros. Like this:
track_1.mp3
track_10.mp3
track_11.mp3
This leads to some confused ordering on my music player. So, I want to add some zeros to the name, so that they're ordered properly, like this:
track_01.mp3
track_02.mp3
track_03.mp3
How do I accomplish this? I tried using GPRename, but while it has the ability to add numbers, it doesn't seem to have any options for adding leading zeros.
Is there a better program or something I can do at the command line?
This question already has an answer here:
Renaming hundreds of files at once for proper sorting
6 answers
rename batch-rename
rename batch-rename
edited Jul 28 '14 at 14:02
guntbert
8,750123067
8,750123067
asked Jul 28 '14 at 4:12
![](https://i.stack.imgur.com/nzyQw.png?s=32&g=1)
![](https://i.stack.imgur.com/nzyQw.png?s=32&g=1)
Questioner
1,4482480146
1,4482480146
marked as duplicate by Oli⦠Jul 28 '14 at 14:11
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by Oli⦠Jul 28 '14 at 14:11
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
My answer on the duplicate should answer this pretty completely in a single command.
â Oliâ¦
Jul 28 '14 at 14:13
1
@Oli, although your answer works here too, the question actually is different, and other answers there do not necessarily work here, because of the precedingtrack_
string. Mine needed editing anyway to make it work on this question.
â Jacob Vlijm
Jul 28 '14 at 15:58
@Oli, Jacob is correct. I had looked at similar solutions to the question you've linked to, but because of the particular naming scheme I was dealing with, it wasn't obvious that any file numbering solution would work. Marking this as duplicate is presuming a level of knowledge that precludes the purpose of asking questions.
â Questioner
Jul 28 '14 at 23:51
1
also @muru, the fact that you can produce an answer that works on more than one question does not make the questions equal. See my reaction on meta meta.askubuntu.com/questions/11622/are-these-duplicates
â Jacob Vlijm
Jul 29 '14 at 18:35
1
@muru Off-topic to the duplication issue, that line would munch the extension. There is certainly a way similar to that which would work though.
â Oliâ¦
Jul 30 '14 at 15:31
 |Â
show 4 more comments
My answer on the duplicate should answer this pretty completely in a single command.
â Oliâ¦
Jul 28 '14 at 14:13
1
@Oli, although your answer works here too, the question actually is different, and other answers there do not necessarily work here, because of the precedingtrack_
string. Mine needed editing anyway to make it work on this question.
â Jacob Vlijm
Jul 28 '14 at 15:58
@Oli, Jacob is correct. I had looked at similar solutions to the question you've linked to, but because of the particular naming scheme I was dealing with, it wasn't obvious that any file numbering solution would work. Marking this as duplicate is presuming a level of knowledge that precludes the purpose of asking questions.
â Questioner
Jul 28 '14 at 23:51
1
also @muru, the fact that you can produce an answer that works on more than one question does not make the questions equal. See my reaction on meta meta.askubuntu.com/questions/11622/are-these-duplicates
â Jacob Vlijm
Jul 29 '14 at 18:35
1
@muru Off-topic to the duplication issue, that line would munch the extension. There is certainly a way similar to that which would work though.
â Oliâ¦
Jul 30 '14 at 15:31
My answer on the duplicate should answer this pretty completely in a single command.
â Oliâ¦
Jul 28 '14 at 14:13
My answer on the duplicate should answer this pretty completely in a single command.
â Oliâ¦
Jul 28 '14 at 14:13
1
1
@Oli, although your answer works here too, the question actually is different, and other answers there do not necessarily work here, because of the preceding
track_
string. Mine needed editing anyway to make it work on this question.â Jacob Vlijm
Jul 28 '14 at 15:58
@Oli, although your answer works here too, the question actually is different, and other answers there do not necessarily work here, because of the preceding
track_
string. Mine needed editing anyway to make it work on this question.â Jacob Vlijm
Jul 28 '14 at 15:58
@Oli, Jacob is correct. I had looked at similar solutions to the question you've linked to, but because of the particular naming scheme I was dealing with, it wasn't obvious that any file numbering solution would work. Marking this as duplicate is presuming a level of knowledge that precludes the purpose of asking questions.
â Questioner
Jul 28 '14 at 23:51
@Oli, Jacob is correct. I had looked at similar solutions to the question you've linked to, but because of the particular naming scheme I was dealing with, it wasn't obvious that any file numbering solution would work. Marking this as duplicate is presuming a level of knowledge that precludes the purpose of asking questions.
â Questioner
Jul 28 '14 at 23:51
1
1
also @muru, the fact that you can produce an answer that works on more than one question does not make the questions equal. See my reaction on meta meta.askubuntu.com/questions/11622/are-these-duplicates
â Jacob Vlijm
Jul 29 '14 at 18:35
also @muru, the fact that you can produce an answer that works on more than one question does not make the questions equal. See my reaction on meta meta.askubuntu.com/questions/11622/are-these-duplicates
â Jacob Vlijm
Jul 29 '14 at 18:35
1
1
@muru Off-topic to the duplication issue, that line would munch the extension. There is certainly a way similar to that which would work though.
â Oliâ¦
Jul 30 '14 at 15:31
@muru Off-topic to the duplication issue, that line would munch the extension. There is certainly a way similar to that which would work though.
â Oliâ¦
Jul 30 '14 at 15:31
 |Â
show 4 more comments
5 Answers
5
active
oldest
votes
up vote
8
down vote
accepted
I'm assuming that you just need to rename the files 1-9, since those are the ones that need padding. There are multiple ways of doing this.
You can execute the below command:
for n in $(seq 9); do mv track_$n.mp3 track_0$n.mp3; done;
This will rename tracks track_1.mp3
- track_9.mp3
to track_01.mp3
- track_09.mp3
.
To break it down, it looks like this:
for n in $(seq 9)
do
mv track_$n.mp3 track_0$n.mp3
done
for n in $(seq 9)
: for every number in the output of the commandseq 9
, which is a command that just lists numbers 1 to 9,do
,mv track_$n.mp3 track_0$n.mp3
: this is the actual command that renames the files. It substitutes the value ofn
iterating through all numbers. So it doesmv track_1.mp3 track_01.mp3
,mv track_2.mp3 track_02.mp3
, until that last number which is 9.
add a comment |Â
up vote
4
down vote
The script below wil rename files is given directory. It calculates the number of leading zeros needed, no matter the number of files (if >100, more zeros are needed), and renames the files automatically.
To use it
copy the script below into an empty file, in the headsection, set the sourcedirectory, the prefix ("track-" in this case) and the file extension of the files you want to rename. Save it as rename.py and run it by the command:
python3 /path/to/script.py
The script:
#!/usr/bin/env python3
import shutil
import os
sourcedir = "/path/to/sourcedir"
prefix = "track_"
extension = "mp3"
files = [(f, f[f.rfind("."):], f[:f.rfind(".")].replace(prefix, "")) for f in os.listdir(sourcedir) if f.endswith(extension)]
maxlen = len(max([f[2] for f in files], key = len))
for item in files:
zeros = maxlen - len(item[2])
shutil.move(sourcedir+"/"+item[0], sourcedir+"/"+prefix+str(zeros*"0"+item[2])+item[1])
add a comment |Â
up vote
1
down vote
Of course there are many ways of doing it. You can, for instance:
- Separate the parts
- pad the part that has the number
- concatenate the individual part back to the new name
Put this into a loop:
#!/bin/bash
item="track_1.mp3"
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo $newname
The loop:
#!/bin/bash
for item in track_1.mp3 track_10.mp3 track_11.mp3
do
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo "Renaming $item -> $newname"
mv $item $newname
done
enter code here
add a comment |Â
up vote
1
down vote
GPRename will automatically insert a zero if you are renaming 10 or more files (two if you are renaming 100 or more, etc.) when using the numerical function. Just make sure Zero auto-fill
is turned on in the Options
menu.
This is useful to know. Although, GPRename, seems to not acknowledge existing numbers, so it seems to not fix this particular situation.
â Questioner
Jul 28 '14 at 9:10
add a comment |Â
up vote
1
down vote
Make a script that will work like a command.
Make this file on the directory where you track file exist.
Do like this
touch change
chmod +x change
vim changeIn it write
#!/bin/bash
n=0
for m in 00 .. 99
do
mv track_$n.mp3 track_$m
n=`expr $n + 1``
done
This would seem to move0
to00
then1
to00
then2
to00
and so forth. I don't think this is correct.
â Boris the Spider
Jul 28 '14 at 8:24
you can check the updated answer.
â Dishank Jindal
Jul 28 '14 at 8:43
Fine, it should now produce the right outcome. But it should be obvious that you don't need to move anything higher than9
as it will already have two digits. It should also be obvious that you only need to movex
to0x
, rather than having two iterators. Finally you have a.mp3
missing. I think this answer is far from ideal.
â Boris the Spider
Jul 28 '14 at 8:49
the program is simple and will take care of all the files. And yes you are also right. i just trying to help.
â Dishank Jindal
Jul 28 '14 at 8:52
add a comment |Â
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
8
down vote
accepted
I'm assuming that you just need to rename the files 1-9, since those are the ones that need padding. There are multiple ways of doing this.
You can execute the below command:
for n in $(seq 9); do mv track_$n.mp3 track_0$n.mp3; done;
This will rename tracks track_1.mp3
- track_9.mp3
to track_01.mp3
- track_09.mp3
.
To break it down, it looks like this:
for n in $(seq 9)
do
mv track_$n.mp3 track_0$n.mp3
done
for n in $(seq 9)
: for every number in the output of the commandseq 9
, which is a command that just lists numbers 1 to 9,do
,mv track_$n.mp3 track_0$n.mp3
: this is the actual command that renames the files. It substitutes the value ofn
iterating through all numbers. So it doesmv track_1.mp3 track_01.mp3
,mv track_2.mp3 track_02.mp3
, until that last number which is 9.
add a comment |Â
up vote
8
down vote
accepted
I'm assuming that you just need to rename the files 1-9, since those are the ones that need padding. There are multiple ways of doing this.
You can execute the below command:
for n in $(seq 9); do mv track_$n.mp3 track_0$n.mp3; done;
This will rename tracks track_1.mp3
- track_9.mp3
to track_01.mp3
- track_09.mp3
.
To break it down, it looks like this:
for n in $(seq 9)
do
mv track_$n.mp3 track_0$n.mp3
done
for n in $(seq 9)
: for every number in the output of the commandseq 9
, which is a command that just lists numbers 1 to 9,do
,mv track_$n.mp3 track_0$n.mp3
: this is the actual command that renames the files. It substitutes the value ofn
iterating through all numbers. So it doesmv track_1.mp3 track_01.mp3
,mv track_2.mp3 track_02.mp3
, until that last number which is 9.
add a comment |Â
up vote
8
down vote
accepted
up vote
8
down vote
accepted
I'm assuming that you just need to rename the files 1-9, since those are the ones that need padding. There are multiple ways of doing this.
You can execute the below command:
for n in $(seq 9); do mv track_$n.mp3 track_0$n.mp3; done;
This will rename tracks track_1.mp3
- track_9.mp3
to track_01.mp3
- track_09.mp3
.
To break it down, it looks like this:
for n in $(seq 9)
do
mv track_$n.mp3 track_0$n.mp3
done
for n in $(seq 9)
: for every number in the output of the commandseq 9
, which is a command that just lists numbers 1 to 9,do
,mv track_$n.mp3 track_0$n.mp3
: this is the actual command that renames the files. It substitutes the value ofn
iterating through all numbers. So it doesmv track_1.mp3 track_01.mp3
,mv track_2.mp3 track_02.mp3
, until that last number which is 9.
I'm assuming that you just need to rename the files 1-9, since those are the ones that need padding. There are multiple ways of doing this.
You can execute the below command:
for n in $(seq 9); do mv track_$n.mp3 track_0$n.mp3; done;
This will rename tracks track_1.mp3
- track_9.mp3
to track_01.mp3
- track_09.mp3
.
To break it down, it looks like this:
for n in $(seq 9)
do
mv track_$n.mp3 track_0$n.mp3
done
for n in $(seq 9)
: for every number in the output of the commandseq 9
, which is a command that just lists numbers 1 to 9,do
,mv track_$n.mp3 track_0$n.mp3
: this is the actual command that renames the files. It substitutes the value ofn
iterating through all numbers. So it doesmv track_1.mp3 track_01.mp3
,mv track_2.mp3 track_02.mp3
, until that last number which is 9.
answered Jul 28 '14 at 5:04
Alaa Ali
21.2k96793
21.2k96793
add a comment |Â
add a comment |Â
up vote
4
down vote
The script below wil rename files is given directory. It calculates the number of leading zeros needed, no matter the number of files (if >100, more zeros are needed), and renames the files automatically.
To use it
copy the script below into an empty file, in the headsection, set the sourcedirectory, the prefix ("track-" in this case) and the file extension of the files you want to rename. Save it as rename.py and run it by the command:
python3 /path/to/script.py
The script:
#!/usr/bin/env python3
import shutil
import os
sourcedir = "/path/to/sourcedir"
prefix = "track_"
extension = "mp3"
files = [(f, f[f.rfind("."):], f[:f.rfind(".")].replace(prefix, "")) for f in os.listdir(sourcedir) if f.endswith(extension)]
maxlen = len(max([f[2] for f in files], key = len))
for item in files:
zeros = maxlen - len(item[2])
shutil.move(sourcedir+"/"+item[0], sourcedir+"/"+prefix+str(zeros*"0"+item[2])+item[1])
add a comment |Â
up vote
4
down vote
The script below wil rename files is given directory. It calculates the number of leading zeros needed, no matter the number of files (if >100, more zeros are needed), and renames the files automatically.
To use it
copy the script below into an empty file, in the headsection, set the sourcedirectory, the prefix ("track-" in this case) and the file extension of the files you want to rename. Save it as rename.py and run it by the command:
python3 /path/to/script.py
The script:
#!/usr/bin/env python3
import shutil
import os
sourcedir = "/path/to/sourcedir"
prefix = "track_"
extension = "mp3"
files = [(f, f[f.rfind("."):], f[:f.rfind(".")].replace(prefix, "")) for f in os.listdir(sourcedir) if f.endswith(extension)]
maxlen = len(max([f[2] for f in files], key = len))
for item in files:
zeros = maxlen - len(item[2])
shutil.move(sourcedir+"/"+item[0], sourcedir+"/"+prefix+str(zeros*"0"+item[2])+item[1])
add a comment |Â
up vote
4
down vote
up vote
4
down vote
The script below wil rename files is given directory. It calculates the number of leading zeros needed, no matter the number of files (if >100, more zeros are needed), and renames the files automatically.
To use it
copy the script below into an empty file, in the headsection, set the sourcedirectory, the prefix ("track-" in this case) and the file extension of the files you want to rename. Save it as rename.py and run it by the command:
python3 /path/to/script.py
The script:
#!/usr/bin/env python3
import shutil
import os
sourcedir = "/path/to/sourcedir"
prefix = "track_"
extension = "mp3"
files = [(f, f[f.rfind("."):], f[:f.rfind(".")].replace(prefix, "")) for f in os.listdir(sourcedir) if f.endswith(extension)]
maxlen = len(max([f[2] for f in files], key = len))
for item in files:
zeros = maxlen - len(item[2])
shutil.move(sourcedir+"/"+item[0], sourcedir+"/"+prefix+str(zeros*"0"+item[2])+item[1])
The script below wil rename files is given directory. It calculates the number of leading zeros needed, no matter the number of files (if >100, more zeros are needed), and renames the files automatically.
To use it
copy the script below into an empty file, in the headsection, set the sourcedirectory, the prefix ("track-" in this case) and the file extension of the files you want to rename. Save it as rename.py and run it by the command:
python3 /path/to/script.py
The script:
#!/usr/bin/env python3
import shutil
import os
sourcedir = "/path/to/sourcedir"
prefix = "track_"
extension = "mp3"
files = [(f, f[f.rfind("."):], f[:f.rfind(".")].replace(prefix, "")) for f in os.listdir(sourcedir) if f.endswith(extension)]
maxlen = len(max([f[2] for f in files], key = len))
for item in files:
zeros = maxlen - len(item[2])
shutil.move(sourcedir+"/"+item[0], sourcedir+"/"+prefix+str(zeros*"0"+item[2])+item[1])
edited Apr 18 at 8:57
muru
130k19273463
130k19273463
answered Jul 28 '14 at 9:29
![](https://i.stack.imgur.com/766hF.png?s=32&g=1)
![](https://i.stack.imgur.com/766hF.png?s=32&g=1)
Jacob Vlijm
61.8k9120214
61.8k9120214
add a comment |Â
add a comment |Â
up vote
1
down vote
Of course there are many ways of doing it. You can, for instance:
- Separate the parts
- pad the part that has the number
- concatenate the individual part back to the new name
Put this into a loop:
#!/bin/bash
item="track_1.mp3"
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo $newname
The loop:
#!/bin/bash
for item in track_1.mp3 track_10.mp3 track_11.mp3
do
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo "Renaming $item -> $newname"
mv $item $newname
done
enter code here
add a comment |Â
up vote
1
down vote
Of course there are many ways of doing it. You can, for instance:
- Separate the parts
- pad the part that has the number
- concatenate the individual part back to the new name
Put this into a loop:
#!/bin/bash
item="track_1.mp3"
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo $newname
The loop:
#!/bin/bash
for item in track_1.mp3 track_10.mp3 track_11.mp3
do
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo "Renaming $item -> $newname"
mv $item $newname
done
enter code here
add a comment |Â
up vote
1
down vote
up vote
1
down vote
Of course there are many ways of doing it. You can, for instance:
- Separate the parts
- pad the part that has the number
- concatenate the individual part back to the new name
Put this into a loop:
#!/bin/bash
item="track_1.mp3"
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo $newname
The loop:
#!/bin/bash
for item in track_1.mp3 track_10.mp3 track_11.mp3
do
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo "Renaming $item -> $newname"
mv $item $newname
done
enter code here
Of course there are many ways of doing it. You can, for instance:
- Separate the parts
- pad the part that has the number
- concatenate the individual part back to the new name
Put this into a loop:
#!/bin/bash
item="track_1.mp3"
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo $newname
The loop:
#!/bin/bash
for item in track_1.mp3 track_10.mp3 track_11.mp3
do
part1=`echo $item | awk -F_ 'print $1'`
part2=`echo $item | awk -F_ 'print $2'`
part2a=`echo $part2 | awk -F. 'print $1'`
part2b=`echo $part2 | awk -F. 'print $2'`
number=`printf "%02d" $part2a`
seperator="_"
newname="$part1$seperator$number.$part2b"
echo "Renaming $item -> $newname"
mv $item $newname
done
enter code here
edited Jul 28 '14 at 6:05
answered Jul 28 '14 at 4:53
L. D. James
17.5k43178
17.5k43178
add a comment |Â
add a comment |Â
up vote
1
down vote
GPRename will automatically insert a zero if you are renaming 10 or more files (two if you are renaming 100 or more, etc.) when using the numerical function. Just make sure Zero auto-fill
is turned on in the Options
menu.
This is useful to know. Although, GPRename, seems to not acknowledge existing numbers, so it seems to not fix this particular situation.
â Questioner
Jul 28 '14 at 9:10
add a comment |Â
up vote
1
down vote
GPRename will automatically insert a zero if you are renaming 10 or more files (two if you are renaming 100 or more, etc.) when using the numerical function. Just make sure Zero auto-fill
is turned on in the Options
menu.
This is useful to know. Although, GPRename, seems to not acknowledge existing numbers, so it seems to not fix this particular situation.
â Questioner
Jul 28 '14 at 9:10
add a comment |Â
up vote
1
down vote
up vote
1
down vote
GPRename will automatically insert a zero if you are renaming 10 or more files (two if you are renaming 100 or more, etc.) when using the numerical function. Just make sure Zero auto-fill
is turned on in the Options
menu.
GPRename will automatically insert a zero if you are renaming 10 or more files (two if you are renaming 100 or more, etc.) when using the numerical function. Just make sure Zero auto-fill
is turned on in the Options
menu.
answered Jul 28 '14 at 6:34
![](https://i.stack.imgur.com/jG9Br.png?s=32&g=1)
![](https://i.stack.imgur.com/jG9Br.png?s=32&g=1)
Aibara
5,80463158
5,80463158
This is useful to know. Although, GPRename, seems to not acknowledge existing numbers, so it seems to not fix this particular situation.
â Questioner
Jul 28 '14 at 9:10
add a comment |Â
This is useful to know. Although, GPRename, seems to not acknowledge existing numbers, so it seems to not fix this particular situation.
â Questioner
Jul 28 '14 at 9:10
This is useful to know. Although, GPRename, seems to not acknowledge existing numbers, so it seems to not fix this particular situation.
â Questioner
Jul 28 '14 at 9:10
This is useful to know. Although, GPRename, seems to not acknowledge existing numbers, so it seems to not fix this particular situation.
â Questioner
Jul 28 '14 at 9:10
add a comment |Â
up vote
1
down vote
Make a script that will work like a command.
Make this file on the directory where you track file exist.
Do like this
touch change
chmod +x change
vim changeIn it write
#!/bin/bash
n=0
for m in 00 .. 99
do
mv track_$n.mp3 track_$m
n=`expr $n + 1``
done
This would seem to move0
to00
then1
to00
then2
to00
and so forth. I don't think this is correct.
â Boris the Spider
Jul 28 '14 at 8:24
you can check the updated answer.
â Dishank Jindal
Jul 28 '14 at 8:43
Fine, it should now produce the right outcome. But it should be obvious that you don't need to move anything higher than9
as it will already have two digits. It should also be obvious that you only need to movex
to0x
, rather than having two iterators. Finally you have a.mp3
missing. I think this answer is far from ideal.
â Boris the Spider
Jul 28 '14 at 8:49
the program is simple and will take care of all the files. And yes you are also right. i just trying to help.
â Dishank Jindal
Jul 28 '14 at 8:52
add a comment |Â
up vote
1
down vote
Make a script that will work like a command.
Make this file on the directory where you track file exist.
Do like this
touch change
chmod +x change
vim changeIn it write
#!/bin/bash
n=0
for m in 00 .. 99
do
mv track_$n.mp3 track_$m
n=`expr $n + 1``
done
This would seem to move0
to00
then1
to00
then2
to00
and so forth. I don't think this is correct.
â Boris the Spider
Jul 28 '14 at 8:24
you can check the updated answer.
â Dishank Jindal
Jul 28 '14 at 8:43
Fine, it should now produce the right outcome. But it should be obvious that you don't need to move anything higher than9
as it will already have two digits. It should also be obvious that you only need to movex
to0x
, rather than having two iterators. Finally you have a.mp3
missing. I think this answer is far from ideal.
â Boris the Spider
Jul 28 '14 at 8:49
the program is simple and will take care of all the files. And yes you are also right. i just trying to help.
â Dishank Jindal
Jul 28 '14 at 8:52
add a comment |Â
up vote
1
down vote
up vote
1
down vote
Make a script that will work like a command.
Make this file on the directory where you track file exist.
Do like this
touch change
chmod +x change
vim changeIn it write
#!/bin/bash
n=0
for m in 00 .. 99
do
mv track_$n.mp3 track_$m
n=`expr $n + 1``
done
Make a script that will work like a command.
Make this file on the directory where you track file exist.
Do like this
touch change
chmod +x change
vim changeIn it write
#!/bin/bash
n=0
for m in 00 .. 99
do
mv track_$n.mp3 track_$m
n=`expr $n + 1``
done
edited Jul 28 '14 at 8:49
![](https://i.stack.imgur.com/pqRUk.png?s=32&g=1)
![](https://i.stack.imgur.com/pqRUk.png?s=32&g=1)
Doorknob
298316
298316
answered Jul 28 '14 at 6:34
![](https://i.stack.imgur.com/D4Eym.jpg?s=32&g=1)
![](https://i.stack.imgur.com/D4Eym.jpg?s=32&g=1)
Dishank Jindal
422214
422214
This would seem to move0
to00
then1
to00
then2
to00
and so forth. I don't think this is correct.
â Boris the Spider
Jul 28 '14 at 8:24
you can check the updated answer.
â Dishank Jindal
Jul 28 '14 at 8:43
Fine, it should now produce the right outcome. But it should be obvious that you don't need to move anything higher than9
as it will already have two digits. It should also be obvious that you only need to movex
to0x
, rather than having two iterators. Finally you have a.mp3
missing. I think this answer is far from ideal.
â Boris the Spider
Jul 28 '14 at 8:49
the program is simple and will take care of all the files. And yes you are also right. i just trying to help.
â Dishank Jindal
Jul 28 '14 at 8:52
add a comment |Â
This would seem to move0
to00
then1
to00
then2
to00
and so forth. I don't think this is correct.
â Boris the Spider
Jul 28 '14 at 8:24
you can check the updated answer.
â Dishank Jindal
Jul 28 '14 at 8:43
Fine, it should now produce the right outcome. But it should be obvious that you don't need to move anything higher than9
as it will already have two digits. It should also be obvious that you only need to movex
to0x
, rather than having two iterators. Finally you have a.mp3
missing. I think this answer is far from ideal.
â Boris the Spider
Jul 28 '14 at 8:49
the program is simple and will take care of all the files. And yes you are also right. i just trying to help.
â Dishank Jindal
Jul 28 '14 at 8:52
This would seem to move
0
to 00
then 1
to 00
then 2
to 00
and so forth. I don't think this is correct.â Boris the Spider
Jul 28 '14 at 8:24
This would seem to move
0
to 00
then 1
to 00
then 2
to 00
and so forth. I don't think this is correct.â Boris the Spider
Jul 28 '14 at 8:24
you can check the updated answer.
â Dishank Jindal
Jul 28 '14 at 8:43
you can check the updated answer.
â Dishank Jindal
Jul 28 '14 at 8:43
Fine, it should now produce the right outcome. But it should be obvious that you don't need to move anything higher than
9
as it will already have two digits. It should also be obvious that you only need to move x
to 0x
, rather than having two iterators. Finally you have a .mp3
missing. I think this answer is far from ideal.â Boris the Spider
Jul 28 '14 at 8:49
Fine, it should now produce the right outcome. But it should be obvious that you don't need to move anything higher than
9
as it will already have two digits. It should also be obvious that you only need to move x
to 0x
, rather than having two iterators. Finally you have a .mp3
missing. I think this answer is far from ideal.â Boris the Spider
Jul 28 '14 at 8:49
the program is simple and will take care of all the files. And yes you are also right. i just trying to help.
â Dishank Jindal
Jul 28 '14 at 8:52
the program is simple and will take care of all the files. And yes you are also right. i just trying to help.
â Dishank Jindal
Jul 28 '14 at 8:52
add a comment |Â
My answer on the duplicate should answer this pretty completely in a single command.
â Oliâ¦
Jul 28 '14 at 14:13
1
@Oli, although your answer works here too, the question actually is different, and other answers there do not necessarily work here, because of the preceding
track_
string. Mine needed editing anyway to make it work on this question.â Jacob Vlijm
Jul 28 '14 at 15:58
@Oli, Jacob is correct. I had looked at similar solutions to the question you've linked to, but because of the particular naming scheme I was dealing with, it wasn't obvious that any file numbering solution would work. Marking this as duplicate is presuming a level of knowledge that precludes the purpose of asking questions.
â Questioner
Jul 28 '14 at 23:51
1
also @muru, the fact that you can produce an answer that works on more than one question does not make the questions equal. See my reaction on meta meta.askubuntu.com/questions/11622/are-these-duplicates
â Jacob Vlijm
Jul 29 '14 at 18:35
1
@muru Off-topic to the duplication issue, that line would munch the extension. There is certainly a way similar to that which would work though.
â Oliâ¦
Jul 30 '14 at 15:31