Sponsored Content
Full Discussion: Renaming files - error
Top Forums UNIX for Beginners Questions & Answers Renaming files - error Post 303029452 by Don Cragun on Saturday 26th of January 2019 12:27:35 PM
Old 01-26-2019
Quote:
Originally Posted by nag_sathi
Code:
set -vx

for i in ~/Shell_Practice/rename/*.txt 
do  
    t=`(echo $i | awk gsub("file","newfile"))`
    mv $i $t
 done

while running the above code getting below error.Please help.


Code:
atomic@atomic-VirtualBox:~/Shell_Practice/rename$ ./rename.sh

for i in ~/Shell_Practice/rename/*.txt 
do  
    t=`(echo $i | awk gsub("file","newfile"))`
    mv $i $t
 done
++ for i in ~/Shell_Practice/rename/*.txt
./rename.sh: command substitution: line 5: syntax error near unexpected token `('
./rename.sh: command substitution: line 5: `(echo $i | awk gsub("file","newfile"))'
++ t=
++ mv /home/atomic/Shell_Practice/rename/file10.txt
mv: missing destination file operand after '/home/atomic/Shell_Practice/rename/file10.txt'
Try 'mv --help' for more information.
++ for i in ~/Shell_Practice/rename/*.txt
./rename.sh: command substitution: line 5: syntax error near unexpected token `('
./rename.sh: command substitution: line 5: `(echo $i | awk gsub("file","newfile"))'
++ t=
++ mv /home/atomic/Shell_Practice/rename/file1.txt
mv: missing destination file operand after '/home/atomic/Shell_Practice/rename/file1.txt'
 Try 'mv --help' for more information.



******************************
file names


Code:
atomic@atomic-VirtualBox:~/Shell_Practice/rename$ ls
file10.txt  file2.txt  file4.txt  file6.txt  file8.txt  rename.sh
file1.txt   file3.txt  file5.txt  file7.txt  file9.txt

Moderator's Comments:
Mod Comment Please use CODE tags when displaying sample input, sample output, and code segments; not just code segments.
There are almost certainly much simpler ways to do what you're trying to do, but we need to know what operating system and shell you're using to be able to suggest a solution that will work in your environment. Whenever you start a new thread in UNIX for Beginners Questions & Answers forum, it always helps us help you if you tell us what operating system and shell you're using!

I note that you're trying to use awk's gsub() function which will replace all occurrences of file with newfile. And I note that none of your filenames contains more than one occurrence of that string. If that string does occur more than once in a filename, do you really want to replace all of them? Or, do you just want to change the first occurrence?

The error you're getting is because you haven't quoted the awk script operand and the shell is seeing the parentheses on the call to gsub() as an attempt to invoke a sub-shell at a spot where a sub-shell is not valid.

If you fix that and you ever try passing a filename to that script that does not contain the string file, the mv command for that file will fail because the variable t will be set to an empty string. If you make sure that your awk script will always return the original filename if no occurrences of the string file were found, you would end up trying to issue a command similar to:
Code:
mv a.txt a.txt

which will be a relatively slow no-op; but at least it won't cause your script to issue diagnostics for missing operands.

The command substitution you're using is an obsolescent form (unless you're using a pure Bourne shell from the 1970's. And, there is no reason to invoke a sub-shell in your command substitution.

Does the operating system you're using include a utility named rename?
This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Renaming files

hi, I have the following files as below. reg_test_123232 reg_test_125654 reg_test_473843 How do I rename reg_test_123232 to abc_123232 and the rest of file by just keeping the numeric field ? Please advise :) (3 Replies)
Discussion started by: cedrichiu
3 Replies

2. UNIX for Dummies Questions & Answers

renaming files

I have a list of files named ab_*.csv I would like to remane them all by removing the ab_ and have *.csv I did the following but I am surely missing something. /* wrong script */ for i in `ls -1 ab_*`; do mv ab_$i $i; done Thanks in advance. (1 Reply)
Discussion started by: jxh461
1 Replies

3. Shell Programming and Scripting

Renaming Files

Hi Alll, I have a script that we use on the servers to change the name of files that have spaces in the name: #!/bin/tcsh set n = 0 foreach f ( * ) echo $f | grep " " if ( $? == 0 ) then mv "$f" `echo $f | sed -e "s/ /_/g"` @ n += 1 endif end echo $n changed I need to write a... (2 Replies)
Discussion started by: abch624
2 Replies

4. Shell Programming and Scripting

Getting error by renaming all the files in a folder

Hi All, I have a folder name as postscript folder and it contains the following postscript files. package1.ps package2.ps package3.ps when i am renaming all the ps files to xps files by using the following command mv /postscript/*.ps /postscript/*.xps Then i am getting the... (4 Replies)
Discussion started by: sunitachoudhury
4 Replies

5. UNIX for Dummies Questions & Answers

Need help renaming files

I just can't figure this one out. I have a lot of files name (for example) ABC1234.5678.ext I need to rename these files U0105678PQRS So I'm removing everything before the first "." I'm keeping "5678" in the file name Adding "U010" to the front of "5678" Dropping the ".ext" extension ... (5 Replies)
Discussion started by: bbbngowc
5 Replies

6. Shell Programming and Scripting

renaming files

Hello, I wanted to rename one file where filename contains space.. How can i rename in unix? The file name is ABC XYZ.TXT I wanted to rename this file as ABCXYZ.TXT. Any help is greatly appreciated... Regards. (4 Replies)
Discussion started by: govindts
4 Replies

7. Shell Programming and Scripting

renaming files or adding a name in the beginning of all files in a folder

Hi All I have a folder that contains hundreds of file with a names 3.msa 4.msa 21.msa 6.msa 345.msa 456.msa 98.msa ... ... ... I need rename each of this file by adding "core_" in the begiining of each file such as core_3.msa core_4.msa core_21.msa (4 Replies)
Discussion started by: Lucky Ali
4 Replies

8. UNIX for Dummies Questions & Answers

Renaming Files With 2 .

Dear All expertise.. just wanna ask if there is a way on how to change the filename as per below sample:- filename:- cob120514093156.03.466926330 CCBS-CPMM_SEND_COB_120514_100549_3.rpt to convert to:- cob120514093156.03.466926330.bd (rename from cob120514093156.03.466926330) ... (17 Replies)
Discussion started by: yokomo
17 Replies

9. Shell Programming and Scripting

renaming files

Hi, I have a list of files in a folder with the same name ending (over 1000 files) joe.jpy.jpeg joe1.jpy.jpeg joe2.jpy.jpeg jon3.jpy.jpeg jor5.jpy.jpeg .....jpy.jpeg etc. I want to change jpy to hhk So the output will be: joe.hhk.jpeg joe1.hhk.jpeg joe2.hhk.jpeg jon3.hhk.jpeg... (3 Replies)
Discussion started by: kylle345
3 Replies

10. Shell Programming and Scripting

Renaming multiple files in sftp server in a get files script

Hi, In sftp script to get files, I have to rename all the files which I am picking. Rename command does not work here. Is there any way to do this? I am using #!/bin/ksh For eg: sftp user@host <<EOF cd /path get *.txt rename *.txt *.txt.done ... (7 Replies)
Discussion started by: jhilmil
7 Replies
All times are GMT -4. The time now is 08:43 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy