You can do it this way (let's say your prefix is "AS"):
x=1; for k in AS*; do y=$((x++)); echo "mv ${k} ${k:0:2}$y.txt"; done
if you want to save extensions use this (pre-test):
x=1; for k in AS*; do y=$((x++)); echo "mv ${k} ${k:0:2}$y.${k#*.}"; done
if pre-test is OK then remove echo and code will run this time:
x=1; for k in AS*; do y=$((x++)); mv ${k} ${k:0:2}$y.txt; done
*for saving extensions (remove echo and code will run this time):
x=1; for k in AS*; do y=$((x++)); mv ${k} ${k:0:2}$y.${k#*.}; done
${k:0:2}
--> first two letters of file 0 to 2...
${k#*.}-
-> extension of the file
I had a similar situation myself and solved it.
My files were like this:
1-6-4-20.txt onar.mol2 replace.py z.out z__06.mol2 z__09.mol2 z__12.mol2 z__15.mol2 z__18.mol2 z__27.mol2 z__30.mol2 z__33.mol2 z__36.mol2
make_com_files.py pt.dat valid.txt z.xyz z__07.mol2 z__10.mol2 z__13.mol2 z__16.mol2 z__25.mol2 z__28.mol2 z__31.mol2 z__34.mol2 z__37.mol2
makepymol.py pymol.pml x.py z__05.mol2 z__08.mol2 z__11.mol2 z__14.mol2 z__17.mol2 z__26.mol2 z__29.mol2 z__32.mol2 z__35.mol2
Note that there is no z_01.mol2
z_02.mol2
z_03.mol2
z_04.mol2
and z_19.mol2
z_20.mol2
etc.. so my z files are not in sequence. I can't get rid of the problem by omitting the z_*
prefix. and also I have onar.mol2
Here is my solution:
pre-test using echo
to see if it is working correctly:
x=1; for k in *.mol2; do y=$((x++)); echo "mv ${k%%.*}.mol2 $y.mol2"; done
output:
mv onar.mol2 1.mol2
mv z__05.mol2 2.mol2
mv z__05.mol2 2.mol2
mv z__06.mol2 3.mol2
mv z__07.mol2 4.mol2
mv z__08.mol2 5.mol2
mv z__09.mol2 6.mol2
mv z__10.mol2 7.mol2
mv z__11.mol2 8.mol2
mv z__12.mol2 9.mol2
mv z__13.mol2 10.mol2
mv z__14.mol2 11.mol2
mv z__15.mol2 12.mol2
mv z__16.mol2 13.mol2
mv z__17.mol2 14.mol2
mv z__18.mol2 15.mol2
mv z__25.mol2 16.mol2
mv z__26.mol2 17.mol2
mv z__27.mol2 18.mol2
mv z__28.mol2 19.mol2
mv z__29.mol2 20.mol2
mv z__30.mol2 21.mol2
mv z__31.mol2 22.mol2
mv z__32.mol2 23.mol2
mv z__33.mol2 24.mol2
mv z__34.mol2 25.mol2
mv z__35.mol2 26.mol2
mv z__36.mol2 27.mol2
mv z__37.mol2 28.mol2
seems correct then I can use this as a command for my aim (by removing echo):
x=1; for k in *.mol2; do y=$((x++)); mv ${k%%.*}.mol2 $y.mol2; done
RESULT: ls -ln:
-rwxrwxrwx 1 0 0 1695 Nov 18 12:07 1-6-4-20.txt
-rwxrwxrwx 1 0 0 1813 Nov 18 13:27 1.mol2
-rwxrwxrwx 1 0 0 2782 Nov 18 13:27 10.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 11.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 12.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 13.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 14.mol2
-rwxrwxrwx 1 0 0 2784 Nov 18 13:27 15.mol2
-rwxrwxrwx 1 0 0 2785 Nov 18 13:27 16.mol2
-rwxrwxrwx 1 0 0 2785 Nov 18 13:27 17.mol2
-rwxrwxrwx 1 0 0 2786 Nov 18 13:27 18.mol2
-rwxrwxrwx 1 0 0 2786 Nov 18 13:27 19.mol2
-rwxrwxrwx 1 0 0 2781 Nov 18 13:27 2.mol2
-rwxrwxrwx 1 0 0 2787 Nov 18 13:27 20.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 21.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 22.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 23.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 24.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 25.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 26.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 27.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 28.mol2
-rwxrwxrwx 1 0 0 2782 Nov 18 13:27 3.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 4.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 5.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 6.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 7.mol2
-rwxrwxrwx 1 0 0 2782 Nov 18 13:27 8.mol2
-rwxrwxrwx 1 0 0 2782 Nov 18 13:27 9.mol2
-rwxrwxrwx 1 0 0 1383 Nov 17 12:27 make_com_files.py
-rwxrwxrwx 1 0 0 5687 Nov 17 16:34 makepymol.py
-rwxrwxrwx 1 0 0 1206 Nov 17 11:36 pt.dat
-rwxrwxrwx 1 0 0 964 Nov 18 13:29 pymol.pml
-rwxrwxrwx 1 0 0 2288 Nov 18 13:27 replace.py
-rwxrwxrwx 1 0 0 1284 Nov 18 13:07 valid.txt
-rwxrwxrwx 1 0 0 3809 Nov 18 12:37 x.py
-rwxrwxrwx 1 0 0 19622334 Nov 18 04:11 z.out
-rwxrwxrwx 1 0 0 34717 Nov 18 12:37 z.xyz
enter code here
EXTRA:
and if I want my files as 00001.mol2
00002.mol2
etc, I can add this command too:
rename 's/\d+/sprintf("%05d",$&)/e' *.mol2
Here are my mol2 files:
-rwxrwxrwx 1 0 0 1813 Nov 18 13:27 00001.mol2
-rwxrwxrwx 1 0 0 2781 Nov 18 13:27 00002.mol2
-rwxrwxrwx 1 0 0 2782 Nov 18 13:27 00003.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 00004.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 00005.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 00006.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 00007.mol2
-rwxrwxrwx 1 0 0 2782 Nov 18 13:27 00008.mol2
-rwxrwxrwx 1 0 0 2782 Nov 18 13:27 00009.mol2
-rwxrwxrwx 1 0 0 2782 Nov 18 13:27 00010.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 00011.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 00012.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 00013.mol2
-rwxrwxrwx 1 0 0 2783 Nov 18 13:27 00014.mol2
-rwxrwxrwx 1 0 0 2784 Nov 18 13:27 00015.mol2
-rwxrwxrwx 1 0 0 2785 Nov 18 13:27 00016.mol2
-rwxrwxrwx 1 0 0 2785 Nov 18 13:27 00017.mol2
-rwxrwxrwx 1 0 0 2786 Nov 18 13:27 00018.mol2
-rwxrwxrwx 1 0 0 2786 Nov 18 13:27 00019.mol2
-rwxrwxrwx 1 0 0 2787 Nov 18 13:27 00020.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 00021.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 00022.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 00023.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 00024.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 00025.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 00026.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 00027.mol2
-rwxrwxrwx 1 0 0 2788 Nov 18 13:27 00028.mol2
-rwxrwxrwx 1 0 0 1695 Nov 18 12:07 1-6-4-20.txt
-rwxrwxrwx 1 0 0 1383 Nov 17 12:27 make_com_files.py
-rwxrwxrwx 1 0 0 5687 Nov 17 16:34 makepymol.py
-rwxrwxrwx 1 0 0 1206 Nov 17 11:36 pt.dat
-rwxrwxrwx 1 0 0 964 Nov 18 13:29 pymol.pml
-rwxrwxrwx 1 0 0 2288 Nov 18 13:27 replace.py
-rwxrwxrwx 1 0 0 1284 Nov 18 13:07 valid.txt
-rwxrwxrwx 1 0 0 3809 Nov 18 12:37 x.py
-rwxrwxrwx 1 0 0 19622334 Nov 18 04:11 z.out
-rwxrwxrwx 1 0 0 34717 Nov 18 12:37 z.xyz