Rename file extension.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Rename file extension.
# 1  
Old 03-01-2013
Rename file extension.

I have a list file that contains names of many files. I am reading one file name at a time using for loop
Then I like to create one more list file but with the file extension changed to "ctl".
Note: The file name can have any number of dots ".". But the extension after the last dot should be changed. And if there is no dot in file name it should append ".ctl"


Code:
for i in `cat listfile.txt`
do
    sed XXXX   >> New_listfile.txt
done



listfile contains data like this:

Code:
 abc.mnp.31235.txt
injo_kluo.miou.-mkop.pdf
12342_kjlu_3234.csv
integrate

I like the output in New_listfile like follows:
Code:
 
abc.mnp.31235.ctl
injo_kluo.miou.-mkop.ctl
12342_kjlu_3234.ctl
integrate.ctl

Help is really appreciated.

Last edited by Scrutinizer; 03-02-2013 at 08:55 AM.. Reason: quote tags => code tags
# 2  
Old 03-01-2013
Use parameter substitution:
Code:
while read file
do
     echo "${file%.*}.ctl"
done < listfile.txt

Note: for i in `cat listfile.txt` is Dangerous Backticks

So use while loop instead as shown above.
# 3  
Old 03-01-2013
Quote:
Originally Posted by bipinajith
Use parameter substitution:
Code:
while read file
do
     echo "${file%.*}.ctl"
done < listfile.txt

Note: for i in `cat listfile.txt` is Dangerous Backticks

So use while loop instead as shown above.

This works could you please explain the below code

Code:
 echo "${file%.*}.ctl"

Not sure how this single line is doing great job.
# 4  
Old 03-01-2013
From KSH manual
Code:
${parameter%pattern}
${parameter%%pattern}
	     If the shell pattern matches the end of the value of  parameter,
	      then  the  value of this expansion is the value of the parameter
	      with the matched part deleted; otherwise substitute the value of
	      parameter.   In  the first form the smallest matching pattern is
	      deleted and in the second form the largest matching  pattern  is
	      deleted.	When parameter is @, *, or an array variable with sub-
	      script @ or *, the substring operation is applied to  each  ele-
	      ment in turn.

This User Gave Thanks to Yoda For This Post:
# 5  
Old 03-02-2013
Code:
$ awk -F"." -v OFS="." ' { NF>1?$NF="ctl":$NF=$NF FS "ctl" } ; 1 ' file
abc.mnp.31235.ctl
injo_kluo.miou.-mkop.ctl
12342_kjlu_3234.ctl
integrate.ctl

Or
Code:
$ sed "s/\.[^.]*$//;s/$/.ctl/" file
abc.mnp.31235.ctl
injo_kluo.miou.-mkop.ctl
12342_kjlu_3234.ctl
integrate.ctl

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Rename specific file extension in directory with match to another file in bash

I have a specific set (all ending with .bam) of downloaded files in a directory /home/cmccabe/Desktop/NGS/API/2-15-2016. What I am trying to do is use a match to $2 in name to rename the downloaded files. To make things a more involved the date of the folder is unique and in the header of name... (1 Reply)
Discussion started by: cmccabe
1 Replies

2. Shell Programming and Scripting

Rename except dot file extension

After reading the manual of the command rename I would like to apply it to a folder with a couple of files containing old style dots before the file-type, e.g. up.to.the.roof.avi. So I'd like to rename them without the dots in between. Therefore I tried it the following way rename -f -n ... (4 Replies)
Discussion started by: 1in10
4 Replies

3. Shell Programming and Scripting

How to rename the extension of a file?

Hello, I have multiple files named rscclog_2013-03-25.txt;3 in a directory, where 2013-03-25 is the previous day's date and the number after extension .txt preceded by a ';' is any number which i do not know beforehand. Now, i have to rename all such files as rscclog_2013-03-25.txt thus,... (2 Replies)
Discussion started by: rahulkt1987
2 Replies

4. Shell Programming and Scripting

Rename all files (filename with spaces) to different extension

Hi, I have files with filenames as below. SGM Daily Sales Email-en-us-05312012.xlwa I want to rename it in .xls. I am writing a script to change this, as there can be multiple files in subfolders. I have the following script. #!/bin/ksh for oldfile in $(find... (1 Reply)
Discussion started by: mac4rfree
1 Replies

5. Shell Programming and Scripting

Rename file to uppercase except extension

Hi, I am trying to make all file in the directory uppercase but not their extension (ex: image.jpg becoming IMAGE.jpg) here is code i am trying. $ ls | while read file do name=${file%%.*} newfilename=$(echo $name | tr 'a-z' 'A-Z') mv $file $newfilename done any suggestions of... (4 Replies)
Discussion started by: johninweb
4 Replies

6. Shell Programming and Scripting

ksh command to rename all files with no extension

hi! i want to rename all files with no extension with the extension DAT. with this command ls |grep -v "\\." i can list files but i dont know how i am going to rename them.. so i tried FILE_LIST=ls |grep -v "\\." for TEST_FILE in ${FILE_LIST} do mv $TEST_FILE... (2 Replies)
Discussion started by: kouppoua
2 Replies

7. Shell Programming and Scripting

rename a file with new extension

Hi guys, i had many files like filename.20110520_20110519_050030 i have to rename the file by removint the last numerics .. i.e filename.dat i tried with cut command and removed the numerics but i'm not able to add .dat to the files. is there any command insted of cut command to... (1 Reply)
Discussion started by: apple2685
1 Replies

8. UNIX for Dummies Questions & Answers

Shell script to rename or change file extension case.

I searched the forum, but there was different type of rename. Hello. I have files in folder. Like: xxxxxxxx1.html or xxxxxxxx2.txt or xxxxxxxx3.tar.gz and how to rename or change file extension case to xxxxxxxx1.htm or xxxxxxx2.TXT or (5 Replies)
Discussion started by: Sheldon
5 Replies

9. Shell Programming and Scripting

rename file extension

I am trying for loop to rename file extension from .txt to .html : as below : for i in *.txt; do mv "$i" `basename $i`.html; done ------------------------------------------- But this renames a file file1.txt as file1.txt.html anyone know how get avoid .html added after .txt ? it... (4 Replies)
Discussion started by: sriram003
4 Replies

10. Shell Programming and Scripting

Recursicely search and rename file extension

Greetings to all!!:b: I have one root folder containing several other folders inside it. This tree structure is deep. And the files are of similar extension. I need to start at the top level and recursively search and rename all the files with say .a extension to .b . This is the code to... (7 Replies)
Discussion started by: riverside
7 Replies
Login or Register to Ask a Question