Renaming files


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Renaming files
# 8  
Old 10-21-2010
# Assuming there are no other kind of pdf files in that directory.
Code:
for i in *.pdf; do
  t=${i% * * * * * * * *.pdf}
  mv "$i" "${t% *}_${t#* }.pdf"
done

# 9  
Old 10-21-2010
Interesting, gotta try that:

Code:
$ t='1 2 3 4 5 6 7 8 9 0'
$ echo ${t% * * *}
1 2 3 4 5 6 7
$

looks destructive!

Comparing read and $(line); line is a c program that does read(buf,0,1) until it finds a line feed, and then prints the line. It does not take more off the input stream than the one line, unlike read which uses a FILE* gets()/fgets() that reads ahead. Then, read trims white space when assigning the fields to one or more variables. However, $(line) costs a fork and exec, while read is ksh builtin and buffered. Apparently, it only affects edge whitespace:

Code:
$ echo ' a  b  c '|read z;echo "X${z}X"
Xa  b  cX
$


Last edited by DGPickett; 10-21-2010 at 04:26 PM..
# 10  
Old 10-21-2010
It's just parameter expansion with lazy pattern matching...
# 11  
Old 10-21-2010
@Scru1Linizer

Doesn't you code assume there is a fix number of single space in the name of the initial file to move ?
# 12  
Old 10-21-2010
Ow, you're right, I thought is was a fixed pattern.
# 13  
Old 10-21-2010
Quote:
Originally Posted by Scrutinizer
It's just parameter expansion with lazy pattern matching...
Yes, but once you lose parts of i as you create t, how do you get them back?

Code:
t="$i"
while [ "$t" != "${t# }" ]
do
 t=${t% *}_${t##* }
done

tr is certainly easier.
# 14  
Old 10-21-2010
Retry, let's take it from the other side:

Still assuming there are no other kind of pdf files in that directory.
Code:
for i in *.pdf; do
  t=${i%%${i#* * }}; t=${t% }
  mv "$i" "${t% *}_${t#* }.pdf"
done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. Shell Programming and Scripting

Renaming files

Hello, I am looking for a command line that will rename name files : f700_abc_o_t_MASTERID_AS_AE_20130323.csv like this f700_abc_o_t_MASTERID_AS_AE_20130324.csv The great idea could be to get the date stamp 20130323 and change any part of it, instead of just change the... (4 Replies)
Discussion started by: Aswex
4 Replies

3. 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

4. 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

5. Shell Programming and Scripting

renaming files

Hi all, using a utility image file was named starting with blank space and a blank space in between. I want to rename the files. file names are in the format " sb 12.tif"," sb 13.tif"," sb 14.tif" the files are in thousands. i want to rename as 12.tif, 13.tif, 14.tif.... thanks. (3 Replies)
Discussion started by: ahkverma
3 Replies

6. 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

7. UNIX for Dummies Questions & Answers

Renaming files

Hello! I am not familiar with UNIX and I have this problem: I need to move files from a UNIX machine to a PC. UNIX file names contain ":" as special character which is not recognized in a PC. How can I change ":" for "_" in the name of a bunch of files in UNIX? Thanks for your help. (7 Replies)
Discussion started by: Tygoon
7 Replies

8. UNIX for Dummies Questions & Answers

renaming files

directory name = /usr/tom/1997 files - ABC_1997_ST1_BCD.SQL BCD_1997_ST1_EFG_SAB.SQL TTT_EBC_1997_ST1_A.SQL sub directory - /usr/tom/1997/jan a) I want to just rename the all files ending with '.SQL' and also its contents in the 1997 directory(excluding subdirectories eg... (3 Replies)
Discussion started by: systemsb
3 Replies

9. UNIX for Dummies Questions & Answers

renaming the files

Hi All, Today I got a small problem while handling zipped files in PROD support. There are files in this format and I had to grep them reading some contents A.B.gz.C.D where A,B,C and D stand for variables (like FIRST.NAME.gz.MIDDLE.LAST). I know that these files are zipped files and If I... (1 Reply)
Discussion started by: adurga
1 Replies

10. UNIX for Dummies Questions & Answers

renaming files

i have a set of *.lst files. now i want to change the names from "lst" to "dat". how to do it? ex.: -rw-r--r-- 1 rram group 22 Sep 21 13:10 a.lst -rw-r--r-- 1 rram group 22 Sep 21 13:09 b.lst -rw-r--r-- 1 rram group 22 Sep 21 13:10 c.lst... (4 Replies)
Discussion started by: raguramtgr
4 Replies
Login or Register to Ask a Question