Rename Files


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Rename Files
# 1  
Old 04-21-2011
Rename Files

Hi all,
I am newbie and Im trying to rename a set of files & there are over 2900 of them. So, the best way I thought was through a script and here is what I got & it doesnt work.

Im not sure as how to figure this out.

Thanks
Gonzalez

Here is what I have -

Code:
-a:~/Users/GonzaPue/ls -altr
total 24
-rw-r--r--    1 GonzaPue     staff     30 Apr 21 17:14 ABCD_201103027_11fh
-rw-r--r--    1 GonzaPue     staff     30 Apr 21 17:14 ABCD_201103028_11fv
-rwx------    1 GonzaPue     staff    515 Apr 21 17:33 Script.sh
drwxr-xr-x    5 GonzaPue     staff    170 Apr 21 17:33 .

-a:~/Users/GonzaPue/ls ABCD_* | awk -F"_" '{print $1"_"$2"_"'`date +%H%M%S`'"_Log" ".txt"}'

ABCD_201103027_195051_Log.txt
ABCD_201103028_195051_Log.txt
ABCD_201103028_195051_Log.txt
ABCD_201103028_195051_Log.txt

I cant seem to put the above line into a script and when I did, it errors out. Here is what I have in the script.

<
Code:
#!/bin/sh

for file in $(ls ABCD_*)
do

File_New=echo "$file" | awk -F"_" '{print $1"_"$2"_"'`date +%H%M%S`'"_Log" ".txt"}'

sleep 1

mv File_New $file

done

>

When I run the above script, it gives me this error -
Code:
ABCD_201103028_11fv: command not found


Please help.

thanks,
Gonzalez.

Last edited by pludi; 04-22-2011 at 04:06 AM..
# 2  
Old 04-21-2011
Quote:
Originally Posted by PG3
#!/bin/sh

for file in $(ls ABCD_*)
That's a useless use of ls *. Whenever you have `ls *` you could just write * and get the same result.

When you have thousands of files, though? You could easily hit the argument size limit trying to use shell globbing, better to use find and read filenames line by line.
Code:
File_New=echo "$file" | awk -F"_" '{print $1"_"$2"_"'`date +%H%M%S`'"_Log" ".txt"}'

What does File_New=echo do? Set the variable "File_new" to the string "echo". Then tries to run the command "$file", which probably becomes "". I don't think that's what you intended.

Also, why run awk 4000 times instead of once?

Also, are you intending to rename files to the current time, or their own time?
Code:
mv File_New $file

File_new has no $ here. So you're trying to move the literal file file_new into whatever $file is.

What's your system? What's your shell? What you can write depends on that.
# 3  
Old 04-22-2011
Corona688,

Hope I have an answer for you and I sure dont.

Here is what Im trying to accomplish here.

When I try to run the following line below -

Code:
ls ABCD_* | awk -F"_" '{print $1"_"$2"_"'`date +%H%M%S`'"_Log" ".txt"}'

It shows this -

ABCD_201103027_195051_Log.txt
ABCD_201103028_195051_Log.txt
ABCD_201103028_195051_Log.txt
ABCD_201103028_195051_Log.txt

As you can see, I have a file name like this ABCD_201103027_11fh & Im trying to make it as ABCD_201103027_195051_Log.txt ie.,
Input - ABCD_201103027_11fh
output - ABCD_201103027_195051_Log.txt

as there are very many files like above, Im trying to rename all of the 2900 of them to stick to the format of ABCD_201103027_timestamp_Log.txt so that each file has a unique name & also a timestamp. Now, to achieve that unique name, Im using the sleep 1 to wait for the next second so that in the next iteration, the file would be named differently.

Now, having said all of the above lines, it could be a totally useless script as you mentioned but can you make it to work ?

Im also open to any other way of doing this but I just cant seem to get that idea nor make this script work.

Hope I made it a clear enough. Any & all help is appreciated with gratitude.

Last edited by pludi; 04-22-2011 at 04:07 AM..
# 4  
Old 04-22-2011
Quote:
Im trying to rename all of the 2900 of them to stick to the format of ABCD_201103027_timestamp_Log.txt so that each file has a unique name & also a timestamp. Now, to achieve that unique name, Im using the sleep 1 to wait for the next second so that in the next iteration, the file would be named differently.
Ahah -- so the timestamp isn't to mark it with its own time, but to make the filename unique! Okay.

You didn't answer the most important question:
Quote:
Originally Posted by Corona688
What's your system? What's your shell? What you can write depends on that.
But since you can't or won't say, I'll try to write a solution that'll work even in terrible shells. Unfortunately that means it won't be the fastest or most efficient or most direct way I could write it.

---------- Post updated at 09:38 AM ---------- Previous update was at 09:19 AM ----------

Code:
#!/bin/sh
# if your system has -maxdepth, you should use find -maxdepth 1 ...
find ./ -name 'ABCD_*' |
        awk -F'_'       -v START=`date +%H:%M:%S` '
BEGIN { split(START, HMS, ":"); }
        {
                printf("%s\t%s_%s_%s_Log.txt\n", $0, $1,$2,HMS[1] ":" HMS[2] ":" HMS[3]);

                if(++HMS[3] >= 60) {    HMS[3]=0;       HMS[2]++;       }
                if(HMS[2] >= 60) {      HMS[2]=0;       HMS[1]++;       }
                if(HMS[1] >= 23)        HMS[1]=0;
        }' | while read ORIG NEW
        do
                echo mv "$ORIG" "$NEW"
        done


Last edited by Corona688; 04-22-2011 at 12:24 PM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

SBATCH trinity for multiple files and rename/move the output files

Hey guys, I have wrote the following script to apply a module named "trinity" on my files. (it takes two input files and spit a trinity.fasta as output) #!/bin/bash -l #SBATCH -p node #SBATCH -A <projectID> #SBATCH -n 16 #SBATCH -t 7-00:00:00 #SBATCH --mem=128GB #SBATCH --mail-type=ALL... (1 Reply)
Discussion started by: @man
1 Replies

2. Shell Programming and Scripting

Script to unzip files and Rename the Output-files

Hi all, I have a many folders with zipped files in them. The zipped files are txt files from different folders. The txt files have the same names. If i try to find . -type f -name "*.zip" -exec cp -R {} /myhome/ZIP \; it fails since the ZIP files from different folders have the same names and... (2 Replies)
Discussion started by: pmkenya
2 Replies

3. UNIX for Dummies Questions & Answers

Rename all .sh files to .pl

I have various .sh and .pl files in one directory. I want to rename all the .sh files to .pl i.e testscript.sh --> testscript.pl I am trying to use mv *.sh *.pl It doesnt work though!! (3 Replies)
Discussion started by: chrisjones
3 Replies

4. Shell Programming and Scripting

How to rename files

Hi Guys, I have to rename about 180 files in different folders in linux. For example, abc_110117.txt eff_110117.txt zzz_110117.txt After renaming the files, these files should like like abc.txt eff.txt zzz.txt I created a small script to rename the files like ls... (2 Replies)
Discussion started by: naveed
2 Replies

5. Shell Programming and Scripting

rename files Ax based on strings found in files Bx

Hi, I'm not very experienced in shell scripting and that's probably why I came across the following problem: I do have several hundred pairs of text files (PF00x.spl and PF00x.shd) where the first file (PF00x.spl) needs to be renamed according a string that is included in the second file... (12 Replies)
Discussion started by: inCH
12 Replies

6. Shell Programming and Scripting

Rename files

Hi, I wanna rename bunch of files which has ":" to -. ie. rename file named file1:file1 to file1-file1. any ideas? (2 Replies)
Discussion started by: linuxaddict7
2 Replies

7. Shell Programming and Scripting

Rename many files

Hi all I have files in the following format: 01_anote1.pdf 01_bnote1.pdf 01_control1.pdf 01_ethics1.pdf 01_invoice1.pdf 01_invoice_21.pdf 20_quote_l1.pdf I need to rename them to 01_anote.pdf 01_bnote.pdf 01_control.pdf 01_ethics.pdf 01_invoice.pdf (9 Replies)
Discussion started by: lmatlebyane
9 Replies

8. Shell Programming and Scripting

Rename files

Hello, I've a list of file like this img_001 img_22 img_44 and I would rename all with this form photo_0001 photo_0002 photo_0003 photo_0004 suggestions?Thanks to all. (2 Replies)
Discussion started by: cv313x
2 Replies

9. UNIX for Dummies Questions & Answers

rename files help

Hi, I've already search for this issue but I found different scripts for rename files, but I don't know how to customize it for my needs. Here's what I want to do: I have a lot of files inside many directories, like this: /aa/01.txt /aa/02.txt /ab/01.txt /ab/02.txt I want all those files... (2 Replies)
Discussion started by: piltrafa
2 Replies

10. Shell Programming and Scripting

rename files

hey all, I have files in the format of ABCD20061101 and ABCDEF20061101 in one directory, I would like to change all ABCD20061101 to ABCDEF20061101 and the problem is if I do a simple pattern match of ABCD, then those ABCDEF20061101 would also... (2 Replies)
Discussion started by: mpang_
2 Replies
Login or Register to Ask a Question