Re: [SLUG] looking for a command to automatically create sequentially numbered files
elliott-brennan == elliott-brennan [EMAIL PROTECTED] writes: elliott-brennan Hi all, elliott-brennan Now, I know I've asked a similar questions, but I elliott-brennan thought that I'd ask again with what may be a clearer elliott-brennan request :) For example: elliott-brennan I have a collection of images labelled - elliott-brennan a_0001.jpeg through to A0999.jpeg b_0001.jpeg through elliott-brennan to A0999.jpeg c_0001.jpeg through to A0999.jpeg elliott-brennan d_0001.jpeg through to A0999.jpeg elliott-brennan I want to merge them as follows: elliott-brennan montage -geometry +4+4 a_0001.jpeg b_0001.jpeg elliott-brennan c_0001.jpeg d_0001.jpeg montage1.jpeg elliott-brennan the output file is montagenumber.jpeg and needs to elliott-brennan be a sequentially increasing number. You need to do it one number at a time. for i in `seq -f '%04.f' 1 999` do montage -geometry +4+4 {a,b,c,d}_$i.jpeg montage$i.jpeg done I'm not sure about the best way to do the _ to A series though. A simplish way would be: for file in a* do num=`expr $file : a\(.*\)\.jpeg` montage -geometry +4+4 {a,b,c,d}$num.jpeg montage$num.jpeg done but this preserves the _-A sequence, so you'll end up with montage_0001.jpeg through to montageA999.jpeg. If you want to replace the _-A with 0-whatever you need a tr line in there: for file in a* do num=`expr $file : a\(.*\)\.jpeg` outnum=`echo $num | tr '_A' '01'` montage -geometry +4+4 {a,b,c,d}$num.jpeg montage$outnum.jpeg done Use your collating sequence, as I don't know what it is ('_' comes after 'A' in ASCII). -- Dr Peter Chubb http://www.gelato.unsw.edu.au peterc AT gelato.unsw.edu.au http://www.ertos.nicta.com.au ERTOS within National ICT Australia -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
Re: [SLUG] looking for a command to automatically create sequentially numbered files
On Sat, Mar 8, 2008 at 1:07 PM, Felix Sheldon [EMAIL PROTECTED] wrote: It looks like you might be using single quotes and not back-ticks (on the ~ key). This works for me, with the echo in there at least. for i in `seq 1 125`; do j=`printf %06d $i`; echo montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done BTW - you can do away with printf and tell seq itself to format the output using -f %06g. Notice that seq only accepts f, e or g, not d. So the above will translate to: for j in `seq -f %06g 1 125`; do echo montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done Cheers, --Amos -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
Re: [SLUG] looking for a command to automatically create sequentially numbered files
Hi Rick, On the basis that this is quite likely something simple that I'm not doing, or the consequence of something I haven't explained clearly enough (as I've very little experience with such things) - These are the files I'm working with: four sets of 124 images each: a_01.jpeg to a_000125.jpeg b_01.jpeg to b_000125.jpeg c_01.jpeg to c_000125.jpeg d_01.jpeg to d_000125.jpeg I've entered the command: $ for i in 'seq 1 999'; do j='printf %04d $i'; montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done and receive the response: bash: syntax error near unexpected token `do' (I've cut-and-pasted the information for accuracy) I've also tried changing: 'seq 1 999' to 'seq 1 125' with no success and tried changing: do j='printf %04d to do j='printf %06d again with no success. I'm wondering if you wouldn't mind having another look at this for me? Thanks again and much appreciated. Regards, Patrick Rick Welykochy wrote: elliott-brennan wrote: Now, I know I've asked a similar questions, but I thought that I'd ask again with what may be a clearer request :) For example: I have a collection of images labelled - a_0001.jpeg through to A0999.jpeg b_0001.jpeg through to A0999.jpeg c_0001.jpeg through to A0999.jpeg d_0001.jpeg through to A0999.jpeg I want to merge them as follows: montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage1.jpeg the output file is montagenumber.jpeg and needs to be a sequentially increasing number. Is there a command that will allow me to do this automatically without having to individually enter each file name and output name? I realise this is a little weird and no doubt unusual, but, as usual, any assistance or direction would be most appreciated. Not weird at all. Well organised file systems often use sequential or semi-sequential numbering to keep things logical and consistent. (Who said consistency is the last refuge of the unimaginative?) The GNU seq command is useful for sequential numbering. $ seq 1 5 1 2 3 4 5 As well, you can use printf to format the numbers as you wish, e.g. $ for i in `seq 1 5`; do echo `printf a_%04d.jpeg $i`; done a_0001.jpeg a_0002.jpeg a_0003.jpeg a_0004.jpeg a_0005.jpeg Putting it all together: $ for i in `seq 1 5`; do j=`printf %04d $i`; echo montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage0001.jpeg montage -geometry +4+4 a_0002.jpeg b_0002.jpeg c_0002.jpeg d_0002.jpeg montage0002.jpeg montage -geometry +4+4 a_0003.jpeg b_0003.jpeg c_0003.jpeg d_0003.jpeg montage0003.jpeg montage -geometry +4+4 a_0004.jpeg b_0004.jpeg c_0004.jpeg d_0004.jpeg montage0004.jpeg montage -geometry +4+4 a_0005.jpeg b_0005.jpeg c_0005.jpeg d_0005.jpeg montage0005.jpeg Get rid of the echo command, change 5 to 999 and Bob's your aunty. cheers rickw -- Registered GNU/Linux User 368634 -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
Re: [SLUG] looking for a command to automatically create sequentially numbered files
It looks like you might be using single quotes and not back-ticks (on the ~ key). This works for me, with the echo in there at least. for i in `seq 1 125`; do j=`printf %06d $i`; echo montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done -- Felix elliott-brennan wrote: Hi Rick, On the basis that this is quite likely something simple that I'm not doing, or the consequence of something I haven't explained clearly enough (as I've very little experience with such things) - These are the files I'm working with: four sets of 124 images each: a_01.jpeg to a_000125.jpeg b_01.jpeg to b_000125.jpeg c_01.jpeg to c_000125.jpeg d_01.jpeg to d_000125.jpeg I've entered the command: $ for i in 'seq 1 999'; do j='printf %04d $i'; montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done and receive the response: bash: syntax error near unexpected token `do' (I've cut-and-pasted the information for accuracy) I've also tried changing: 'seq 1 999' to 'seq 1 125' with no success and tried changing: do j='printf %04d to do j='printf %06d again with no success. I'm wondering if you wouldn't mind having another look at this for me? Thanks again and much appreciated. Regards, Patrick Rick Welykochy wrote: elliott-brennan wrote: Now, I know I've asked a similar questions, but I thought that I'd ask again with what may be a clearer request :) For example: I have a collection of images labelled - a_0001.jpeg through to A0999.jpeg b_0001.jpeg through to A0999.jpeg c_0001.jpeg through to A0999.jpeg d_0001.jpeg through to A0999.jpeg I want to merge them as follows: montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage1.jpeg the output file is montagenumber.jpeg and needs to be a sequentially increasing number. Is there a command that will allow me to do this automatically without having to individually enter each file name and output name? I realise this is a little weird and no doubt unusual, but, as usual, any assistance or direction would be most appreciated. Not weird at all. Well organised file systems often use sequential or semi-sequential numbering to keep things logical and consistent. (Who said consistency is the last refuge of the unimaginative?) The GNU seq command is useful for sequential numbering. $ seq 1 5 1 2 3 4 5 As well, you can use printf to format the numbers as you wish, e.g. $ for i in `seq 1 5`; do echo `printf a_%04d.jpeg $i`; done a_0001.jpeg a_0002.jpeg a_0003.jpeg a_0004.jpeg a_0005.jpeg Putting it all together: $ for i in `seq 1 5`; do j=`printf %04d $i`; echo montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage0001.jpeg montage -geometry +4+4 a_0002.jpeg b_0002.jpeg c_0002.jpeg d_0002.jpeg montage0002.jpeg montage -geometry +4+4 a_0003.jpeg b_0003.jpeg c_0003.jpeg d_0003.jpeg montage0003.jpeg montage -geometry +4+4 a_0004.jpeg b_0004.jpeg c_0004.jpeg d_0004.jpeg montage0004.jpeg montage -geometry +4+4 a_0005.jpeg b_0005.jpeg c_0005.jpeg d_0005.jpeg montage0005.jpeg Get rid of the echo command, change 5 to 999 and Bob's your aunty. cheers rickw -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
Re: [SLUG] looking for a command to automatically create sequentially numbered files
On Sun, Mar 09, 2008 at 12:07:45AM +1100, Felix Sheldon wrote: It looks like you might be using single quotes and not back-ticks (on the ~ key). This works for me, with the echo in there at least. for i in `seq 1 125`; do j=`printf %06d $i`; echo montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done you can also use $( some-command ) -- Felix elliott-brennan wrote: Hi Rick, On the basis that this is quite likely something simple that I'm not doing, or the consequence of something I haven't explained clearly enough (as I've very little experience with such things) - These are the files I'm working with: four sets of 124 images each: a_01.jpeg to a_000125.jpeg b_01.jpeg to b_000125.jpeg c_01.jpeg to c_000125.jpeg d_01.jpeg to d_000125.jpeg I've entered the command: $ for i in 'seq 1 999'; do j='printf %04d $i'; montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done and receive the response: bash: syntax error near unexpected token `do' (I've cut-and-pasted the information for accuracy) I've also tried changing: 'seq 1 999' to 'seq 1 125' with no success and tried changing: do j='printf %04d to do j='printf %06d again with no success. I'm wondering if you wouldn't mind having another look at this for me? Thanks again and much appreciated. Regards, Patrick Rick Welykochy wrote: elliott-brennan wrote: Now, I know I've asked a similar questions, but I thought that I'd ask again with what may be a clearer request :) For example: I have a collection of images labelled - a_0001.jpeg through to A0999.jpeg b_0001.jpeg through to A0999.jpeg c_0001.jpeg through to A0999.jpeg d_0001.jpeg through to A0999.jpeg I want to merge them as follows: montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage1.jpeg the output file is montagenumber.jpeg and needs to be a sequentially increasing number. Is there a command that will allow me to do this automatically without having to individually enter each file name and output name? I realise this is a little weird and no doubt unusual, but, as usual, any assistance or direction would be most appreciated. Not weird at all. Well organised file systems often use sequential or semi-sequential numbering to keep things logical and consistent. (Who said consistency is the last refuge of the unimaginative?) The GNU seq command is useful for sequential numbering. $ seq 1 5 1 2 3 4 5 As well, you can use printf to format the numbers as you wish, e.g. $ for i in `seq 1 5`; do echo `printf a_%04d.jpeg $i`; done a_0001.jpeg a_0002.jpeg a_0003.jpeg a_0004.jpeg a_0005.jpeg Putting it all together: $ for i in `seq 1 5`; do j=`printf %04d $i`; echo montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage0001.jpeg montage -geometry +4+4 a_0002.jpeg b_0002.jpeg c_0002.jpeg d_0002.jpeg montage0002.jpeg montage -geometry +4+4 a_0003.jpeg b_0003.jpeg c_0003.jpeg d_0003.jpeg montage0003.jpeg montage -geometry +4+4 a_0004.jpeg b_0004.jpeg c_0004.jpeg d_0004.jpeg montage0004.jpeg montage -geometry +4+4 a_0005.jpeg b_0005.jpeg c_0005.jpeg d_0005.jpeg montage0005.jpeg Get rid of the echo command, change 5 to 999 and Bob's your aunty. cheers rickw -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html -- One thing is clear, is relations between America and Russia are good, and they're important that they be good. - George W. Bush 07/15/2006 Strelna, Russia signature.asc Description: Digital signature -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
Re: [SLUG] looking for a command to automatically create sequentially numbered files
On Sun, 9 Mar 2008, Alex Samad [EMAIL PROTECTED] wrote: On Sun, Mar 09, 2008 at 12:07:45AM +1100, Felix Sheldon wrote: It looks like you might be using single quotes and not back-ticks (on the ~ key). This works for me, with the echo in there at least. for i in `seq 1 125`; do j=`printf %06d $i`; echo montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done you can also use $( some-command ) Which can be better as you can nest commands, like so: $($(command1)command2) -- We like to think of ourselves as the Microsoft of the energy world - Kenneth Lay, former CEO of Enron signature.asc Description: This is a digitally signed message part. -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
[SLUG] looking for a command to automatically create sequentially numbered files
Hi all, Now, I know I've asked a similar questions, but I thought that I'd ask again with what may be a clearer request :) For example: I have a collection of images labelled - a_0001.jpeg through to A0999.jpeg b_0001.jpeg through to A0999.jpeg c_0001.jpeg through to A0999.jpeg d_0001.jpeg through to A0999.jpeg I want to merge them as follows: montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage1.jpeg the output file is montagenumber.jpeg and needs to be a sequentially increasing number. Is there a command that will allow me to do this automatically without having to individually enter each file name and output name? I realise this is a little weird and no doubt unusual, but, as usual, any assistance or direction would be most appreciated. Regards, Patrick -- Registered GNU/Linux User 368634 -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
[SLUG] looking for a command to automatically create sequentially numbered files
Hi all, Now, I know I've asked a similar questions, but I thought that I'd ask again with what may be a clearer request :) For example: I have a collection of images labelled - a_0001.jpeg through to A0999.jpeg b_0001.jpeg through to A0999.jpeg c_0001.jpeg through to A0999.jpeg d_0001.jpeg through to A0999.jpeg I want to merge them as follows: montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage1.jpeg the output file is montagenumber.jpeg and needs to be a sequentially increasing number. Is there a command that will allow me to do this automatically without having to individually enter each file name and output name? I realise this is a little weird and no doubt unusual, but, as usual, any assistance or direction would be most appreciated. Regards, Patrick -- Registered GNU/Linux User 368634 -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
Re: [SLUG] looking for a command to automatically create sequentially numbered files
elliott-brennan wrote: Now, I know I've asked a similar questions, but I thought that I'd ask again with what may be a clearer request :) For example: I have a collection of images labelled - a_0001.jpeg through to A0999.jpeg b_0001.jpeg through to A0999.jpeg c_0001.jpeg through to A0999.jpeg d_0001.jpeg through to A0999.jpeg I want to merge them as follows: montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage1.jpeg the output file is montagenumber.jpeg and needs to be a sequentially increasing number. Is there a command that will allow me to do this automatically without having to individually enter each file name and output name? I realise this is a little weird and no doubt unusual, but, as usual, any assistance or direction would be most appreciated. Not weird at all. Well organised file systems often use sequential or semi-sequential numbering to keep things logical and consistent. (Who said consistency is the last refuge of the unimaginative?) The GNU seq command is useful for sequential numbering. $ seq 1 5 1 2 3 4 5 As well, you can use printf to format the numbers as you wish, e.g. $ for i in `seq 1 5`; do echo `printf a_%04d.jpeg $i`; done a_0001.jpeg a_0002.jpeg a_0003.jpeg a_0004.jpeg a_0005.jpeg Putting it all together: $ for i in `seq 1 5`; do j=`printf %04d $i`; echo montage -geometry +4+4 a_$j.jpeg b_$j.jpeg c_$j.jpeg d_$j.jpeg montage$j.jpeg; done montage -geometry +4+4 a_0001.jpeg b_0001.jpeg c_0001.jpeg d_0001.jpeg montage0001.jpeg montage -geometry +4+4 a_0002.jpeg b_0002.jpeg c_0002.jpeg d_0002.jpeg montage0002.jpeg montage -geometry +4+4 a_0003.jpeg b_0003.jpeg c_0003.jpeg d_0003.jpeg montage0003.jpeg montage -geometry +4+4 a_0004.jpeg b_0004.jpeg c_0004.jpeg d_0004.jpeg montage0004.jpeg montage -geometry +4+4 a_0005.jpeg b_0005.jpeg c_0005.jpeg d_0005.jpeg montage0005.jpeg Get rid of the echo command, change 5 to 999 and Bob's your aunty. cheers rickw -- Rick Welykochy || Praxis Services || Internet Driving Instructor When I was a kid I used to pray every night for a new bicycle. Then I realized that the Lord doesn't work that way so I stole one and asked Him to forgive me. -- Emo Phillips -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html