Visit Our UNIX and Linux User Community


Change all filenames in a directory


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Change all filenames in a directory
# 1  
Old 09-17-2009
Change all filenames in a directory

I have a directory of files and each file has a random 5 digit string at the beginning that needs to be removed. Plus, there are some files that will be identically named after the 5 digit string is removed and I want those eliminated or moved.
any ideas?
# 2  
Old 09-17-2009
Ad hoc (untested):

Code:
#! /bin/bash

for OLD_FILE in $( ls $FOLDER | egrep '^[0-9]{5}' )
do
  NEW_FILE=$( echo ${OLD_FILE} | sed 's/^[0-9]{5}//' )
  if [ -f $FOLDER/$NEW_FILE ]
  then
    rm $FOLDER/$NEW_FILE
  fi
  mv $FOLDER/$OLD_FILE $FOLDER/$NEW_FILE
done

exit 0

# 3  
Old 09-17-2009
Thanks for the response. I tried a test case with the code you gave and the filenames don't change.
Code:
#! /bin/bash

for OLD_FILE in $( ls | egrep '^[0-9]{5}' )
do
  NEW_FILE=$( echo ${OLD_FILE} | sed 's/^[0-9]{5}//' )
  if [ -f $NEW_FILE ]
  then
    echo $NEW_FILE'-duplicate'
  fi
  echo $OLD_FILE $NEW_FILE
done

exit 0

The code I think is not working is: ( echo ${OLD_FILE} | sed 's/^[0-9]{5}//' )
Any thoughts?
# 4  
Old 09-17-2009
the 'echo' is doing what was coded. I suspect that dr.house didn't want to assume how you wanted to move/modify/etc the files, so they just echoed the output to show that the logic was sound. This leaves it up to you to move/modify/etc the code to do what you want.
# 5  
Old 09-17-2009
I added the echo so if anything haywire happens then I don't mess stuff up. The echo shows the same filename, one after the other.
Is the 'sed' code correct? Am I doing something wrong?
# 6  
Old 09-17-2009
Sure enough, sorry about that.

It may not be the most elegant, but:

Code:
NEW_FILE=$( echo ${OLD_FILE} | sed 's/^[0-9][0-9][0-9][0-9][0-9]//' )

# 7  
Old 09-17-2009
Cool. That did it. Here is my pseudo-final solution: -also not pretty but does the job.
Code:
#! /bin/bash

for OLD_FILE in $( ls | egrep '^[[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]]' )
do
  NEW_FILE=$( echo ${OLD_FILE} | sed 's/^[[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]][[:alnum:]]//' )
  if [ -f $NEW_FILE ]
  then
    echo $NEW_FILE'-duplicate'
  fi
  echo $OLD_FILE $NEW_FILE

done

exit 0


Previous Thread | Next Thread
Test Your Knowledge in Computers #982
Difficulty: Medium
NetBSD is a free and open-source Unix-like operating system based on the Berkeley Software Distribution (BSD).
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Change filenames recursively

Hello, I made a mistake in a script and now need to go back and change allot of filenames. I need to change "v4" in filenames to "v3". I was thinking of something like this. #!/bin/bash FILELIST=$(ls -f -R *) for FILE in $FILELIST do # create new filename ... (5 Replies)
Discussion started by: LMHmedchem
5 Replies

2. Shell Programming and Scripting

change filenames but not extension

I have a filename with a bunch of periods that I want to replace with underscores, but I don't want to change the extension. Ex: I want file.test1.f-1.fig.eps to be file_test1_f-1_fig.eps Using awk, the following line will replace ALL periods with underscores, but I want to leave the... (2 Replies)
Discussion started by: erinbot
2 Replies

3. Shell Programming and Scripting

Change all filenames under different folders...

Hi, all: I'd love to use shell script to change all filenames under different folders once for all: I've got over 100 folders, in each of them, there is a file named "a.ppm". I wanna change all these "a.ppm" to "b.ppm", and still . Visually, the directory structure looks like: and hope... (1 Reply)
Discussion started by: jiapei100
1 Replies

4. Shell Programming and Scripting

Change part of filenames in a bulk way

Hallo! I have generated lots of data file which all having this format: sp*t1overt2*.txt Now I want to change them in this way: sp*t2overt1*.txt The rest of the file names stay unchanged. I know this is kind of routine action in sed or awk, but dont know how! I tried this command: ... (6 Replies)
Discussion started by: forgi
6 Replies

5. UNIX for Dummies Questions & Answers

Filenames change in a directory

Hi I have abc_ahb_one.v abc_ahb_two.v abc_ahb_three.v ........l like this -----upto abc_ahb_ninety.v in some directory. I need to change those file names to like below. ... (5 Replies)
Discussion started by: praneethk
5 Replies

6. Shell Programming and Scripting

Use filenames to create directory.

I have many files similar to this one: AC41_AC85_86_AC128_129_MC171_173_SF_207_FMV.pdf. I want a directory named AC41 and to put the file AC41_AC85_86_AC128_129_MC171_173_SF_207_FMV.pdf into the directory. Next, a directory named AC85 and put the file into it. Also, continue to cycle through... (1 Reply)
Discussion started by: ndnkyd
1 Replies

7. Shell Programming and Scripting

concatenating the filenames in a directory

hi all, I have a requirement where in i have to read all the filenames based on a pattern from a directory and concatenate all these file names and write it to another file. i am using the following code to do this var1='' for filename in $_DIR/${FILE_NAME}* do if if then... (7 Replies)
Discussion started by: nvuradi
7 Replies

8. Shell Programming and Scripting

looping thru filenames in a directory

Hi, i am very new to UNIX, i am trying to loop thru the files in a directory. I got the filenames into a variable using $files=`ls` Here $files will contain <filename1> <filename2> <filename3> I want to get one filename at a time and append it to some some text. forexample, ... (1 Reply)
Discussion started by: silas.john
1 Replies

9. UNIX for Dummies Questions & Answers

Need to change filenames in a particular directory from lowercase to UPPERCASE

Hi, I need a shell script which changes a bunch of files in a particular directory from lowercase to UPPERCASE. I am not very familiar with shell scripts so a detailed explanation would be greatly appreciated!!!! Thanks ini advance! :) (7 Replies)
Discussion started by: Duke_Lukem
7 Replies

10. Shell Programming and Scripting

change filenames to Proper case

Hi, I have files with all its characters in lower cases. I need to change them to "proper case" (starting char to be come Upper case). How can I? Pls suggest. for e.g. xyz.txt should become Xyz.txt TIA Prvn (7 Replies)
Discussion started by: prvnrk
7 Replies

Featured Tech Videos