changing filenames in a directory to a number within a loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting changing filenames in a directory to a number within a loop
# 29  
Old 12-13-2007
Quote:
Originally Posted by visitorQ
@vgersh, of course! that's why i'm losing files, because it's overwriting existing ones before the loop gets to them. and that's where the sort may be able to help. thanks for clearing that up!

@shamrock, your code works perfectly the first time, but like the last script i was working with: if executed a second time, i lose files.

@denn, 'this file is already in the format you stated you want.. so why would you want to move it??', well i'll be adding more photos days later to the gallery, and i'd like to just run the command again, and have the filenames follow the ascending order without disturbing the original (already altered) filenames. and i agree, we're going to need to throw some logic in there, but i would still like to ignore the check to see if the file is already in the correct format, because sometimes, i'll be adding files with intigers in them, but they may be the wrong number. for instance, let's say i have 1.jpg - 10.jpg in a directory. then i add some images like 57.jpg and 1152.jpg. since the filename is an intiger, it's fine, right? no. all of them have to be in ascending order, one behind the other. there can't be any gaps in the integers. so to solve this problem i think all we need is a more intelligent sort and it should work no problem. i'll see what i can do with this.

thank you all for your help and guidance!
What do you mean by losing files? I am unable to follow that please explain.
# 30  
Old 12-13-2007
Quote:
Originally Posted by visitorQ
@vgersh, of course! that's why i'm losing files, because it's overwriting existing ones before the loop gets to them. and that's where the sort may be able to help. thanks for clearing that up!

@shamrock, your code works perfectly the first time, but like the last script i was working with: if executed a second time, i lose files.

@denn, 'this file is already in the format you stated you want.. so why would you want to move it??', well i'll be adding more photos days later to the gallery, and i'd like to just run the command again, and have the filenames follow the ascending order without disturbing the original (already altered) filenames. and i agree, we're going to need to throw some logic in there, but i would still like to ignore the check to see if the file is already in the correct format, because sometimes, i'll be adding files with intigers in them, but they may be the wrong number. for instance, let's say i have 1.jpg - 10.jpg in a directory. then i add some images like 57.jpg and 1152.jpg. since the filename is an intiger, it's fine, right? no. all of them have to be in ascending order, one behind the other. there can't be any gaps in the integers. so to solve this problem i think all we need is a more intelligent sort and it should work no problem. i'll see what i can do with this.

thank you all for your help and guidance!
Code:
ls -1 *.jpg | \
awk -F"." '
{
  if ($0~"^[0-9]+.jpg$")
     i++
  else
     system("mv \""$0"\" "++i"."$NF)
}'

# 31  
Old 12-14-2007
MySQL

shamrock your script works almost perfectly. check out these circumstances:
Code:
kumi@throne:atlas/images/photos % ls
313.jpg                        gallery*           Luis Work 017.jpg  Luis Work 044.jpg  pic 2.jpg          Wilsonart.jpg
7.jpg                          Karndean_000.jpg   Luis Work 018.jpg  Luis Work 045.jpg  pic 3.jpg          Wilsonart_Picture1.jpg
BA2.jpg                        Luis Work 001.jpg  Luis Work 028.jpg  Luis Work 046.jpg  pic 4.jpg
Bretlin_Closeup_Picture.jpg    Luis Work 008.jpg  Luis Work 029.jpg  Luis Work 055.jpg  pic 5.jpg
Cherry floor.jpg               Luis Work 009.jpg  Luis Work 030.jpg  Luis Work 068.jpg  productcarpet.jpg
Daltile.jpg                    Luis Work 010.jpg  Luis Work 042.jpg  Luis Work 069.jpg  Tile.jpg
EW01-A4DiningLounge-FEB06.jpg  Luis Work 016.jpg  Luis Work 043.jpg  Luis Work 070.jpg  untitled folder/
kumi@throne:atlas/images/photos % ./gallery 
kumi@throne:atlas/images/photos % ls
10.jpg  12.jpg  14.jpg  16.jpg  18.jpg  20.jpg  22.jpg  24.jpg  26.jpg  28.jpg  30.jpg   31.jpg  33.jpg  35.jpg  4.jpg  6.jpg  8.jpg  gallery*
11.jpg  13.jpg  15.jpg  17.jpg  19.jpg  21.jpg  23.jpg  25.jpg  27.jpg  29.jpg  313.jpg  32.jpg  34.jpg  3.jpg   5.jpg  7.jpg  9.jpg  untitled folder/

check out the image 313.jpg. it remains unchanged after the script is executed. i am not familiar with awk (altho i wish i was because it is powerful as hell), but i'm sure there's a way to fix it. must be huh? what do you think?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

For/While Loop to Increment Filenames in a Script

Daily stupid question. I want to increment the file name everytime the script is run. So for example if the filename is manager.log and I run the script, I want the next sequence to be manager.log1. So to be clear I only want it to increment when the script is executed. So ./script... (10 Replies)
Discussion started by: metallica1973
10 Replies

2. UNIX for Dummies Questions & Answers

[Solved] Writing a loop to changing the names of files in a directory

Hi, I would like to write a loop to change the names of files in a directory. The files are called data1.txt through data1000.txt. I'd like to change their names to a1.txt through a1000.txt. How do I go about doing that? Thanks! (2 Replies)
Discussion started by: evelibertine
2 Replies

3. Shell Programming and Scripting

Generate filenames in a loop

Hi all, I want to generate output files in a loop, run the same command on the same input file 1000 times and output in files with a new name each time, maybe a number appended to it. The output will be different each time as I`m sampling randomly from the input file. I want to do the... (3 Replies)
Discussion started by: newbie83
3 Replies

4. UNIX and Linux Applications

Firefox changing hidden filenames

Is firefox changing the filename of this hidden file for anyone else? I tried in firefox 3, 4, and 6. They all got changed when I tried when I downloaded the file. Firefox removed the leading dot that makes the file be hidden. MEGAUPLOAD - The leading online storage and file delivery service (2 Replies)
Discussion started by: cokedude
2 Replies

5. Shell Programming and Scripting

changing number in bash (number is in form of string)

I have a txt file as database. when i run my program what it does is it ask me for 3 name and stored in the file as name1:name2:name3:1 when u enter 3 name it add those in file as above format and add 1 at the end. I what i want is if i enter same names again it changes that 1 to 2 and so... (3 Replies)
Discussion started by: Learnerabc
3 Replies

6. Shell Programming and Scripting

Whitespace in filenames in for loop in bash script

I'm trying to search all .odt files in a directory for a string in the text of the file. I've found a bash script that works, except that it can't handle whitespace in the filenames. #!/bin/bash if ; then echo "Usage: searchodt searchterm" exit 1 fi for file in $(ls *.odt); do ... (4 Replies)
Discussion started by: triplemaya
4 Replies

7. Shell Programming and Scripting

loop through numbered filenames

Hi I'm very new to this script thing, so please be gentle. I am trying to get a command - the mach2qtl command in the code below - to loop through a set of files. Each command should take the same two .dat and .ped files, but the .mlinfo and .mlprob files with filenames including 'chrom1' ... (7 Replies)
Discussion started by: polly_falconer
7 Replies

8. Shell Programming and Scripting

Help with how to account for changing filenames

The files below are essentially “lookup files” used in a series of scripts that run through the look up files and grab the correct Group Name and File Type and then unless I have the file name specified will replace the variable with the corresponding group name when processing the files before... (1 Reply)
Discussion started by: defiant82
1 Replies

9. UNIX for Dummies Questions & Answers

extracting and using date from filenames in a loop

HIya, Having a dumb day whilst writing an archive process in Shell want to extract from the filename the date and archive into tar files based on this, I don't want to use mtime as it may not be the actual file date. The files are -rw-rw---- 1 user admin 100 Aug 29 11:10... (2 Replies)
Discussion started by: badg3r
2 Replies

10. UNIX for Dummies Questions & Answers

Appending text to a number of similar filenames

Hi, I was wondering if there was a way to append something to filenames based on a wildcard. For example, if I have the following files in a directory: blah1 blah2 blah3 blah4 blah5 I want to rename these all to: blah1.txt blah2.txt blah3.txt blah4.txt blah5.txt Is there a... (4 Replies)
Discussion started by: Djaunl
4 Replies
Login or Register to Ask a Question