How can i truncate filenmes?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How can i truncate filenmes?
# 1  
Old 07-16-2007
How can i truncate filenmes?

I am using FC6 just in case it matters, though i hope it doesn't.

If i have a file or some files that i want to truncate the filename of, so that it is only a certain number of characters in length, how would i do that on the command line?

Also, just to make it more interesting, say i wanted to keep the filename extension... would that be possible also? for example, the input filename would be something like a-ridiculously-long-filename_That_You_Wouldnt-give-to-your-WORST_enemy.TXT and then you run a command to truncate it to (say) 24 characters and you end up with a file called a-ridiculously-long-.TXT which is 24 characters, but the final four characters are the same file extension (including dot) from the original filename.

For extra marks, though it's not something i think i'll actually use at the moment, any way to make that sensitive to different file extensions? For example, files ending in longer extensions or with more then one ot, like *.flac or *.tar.gz

Thanks in advance, all!
# 2  
Old 07-16-2007
Try:
Code:
#!/bin/ksh
find /path -type -f | \
while read filename
do
	file=${filename%%.*}
	ext=${filename##*.}
	if [[ ${#file} -gt 24 ]] ; then
	     shorter=`expr $file 1 24`
	     mv $filename "$shorter"."$ext
	fi     
done

# 3  
Old 07-16-2007
Use zsh (sudo yum -y install zsh, if not already present):


Code:
% ls
a-ridiculously-long-filename_That_You_Wouldnt-give-to-your-WORST_enemy.TXT
a-ridiculously-long-filename_That_You_Wouldnt-give-to-your-WORST_enemy.TXT.tar.gz
% autoload -U zmv
% zmv -n '(*).*' '${f[1,$((23-${#f#*.}))]}.${f#*.}'
mv -- a-ridiculously-long-filename_That_You_Wouldnt-give-to-your-WORST_enemy.TXT a-ridiculously-long-.TXT
mv -- a-ridiculously-long-filename_That_You_Wouldnt-give-to-your-WORST_enemy.TXT.tar.gz a-ridiculousl.TXT.tar.gz

Remove -n to execute.
# 4  
Old 07-19-2007
thanks folks! quite surprised to see a ksh and a csh response and no sh/bash ones! well, this means i don't properly understand the examples, since i have only ever used bash but perhaps this is y opportunity to start getting familiar with csh and ksh.

thanks again...
# 5  
Old 07-19-2007
csh ? Smilie

(message too short)
# 6  
Old 07-20-2007
sorry, i meant zsh, I'm always getting those pesky letters of the alphabet mixed up!
# 7  
Old 07-20-2007
Calum,
Here is a solution in plain shell:
Code:
#!/bin/sh
mName24=`echo ${mFullName} | cut -c1-24`
mExt=`echo ${mFullName} | sed 's/.*\(\..*\)/\1/'`
m24PlusExt=${mName24}${mExt}

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

recover the truncate file

hi All, how to recover the truncate file in unix. Thanks!:wall: (2 Replies)
Discussion started by: krbala1985
2 Replies

2. Shell Programming and Scripting

Truncate terminal output

Hello Using BASH under Ubuntu 10.4 lts + XMonad My script is almost perfect but i'm stuck at the last hurdle: I need a sort of modified 'echo' which truncates its output to the width of the terminal I can find the terminal's width with 'stty size' but i dont know how to then convert input... (2 Replies)
Discussion started by: scyptnex
2 Replies

3. Shell Programming and Scripting

Truncate string variable

Hi, I want to truncate a string variable, returned in the script. In perl I used the below and it worked. BRNo=BR12345 $BR = substr($BRNo, 2, 7) How can I do it in sh. Thanks ! (8 Replies)
Discussion started by: script2010
8 Replies

4. Shell Programming and Scripting

Truncate file name to 40 characters

Hello all. I would like to make a script (or two shell scripts) that will do the following. I need the maximum file name and directory name to be 38 characters long. As well, if shortening the file name ends up making all of the files in that directory have the same name, then I would like... (9 Replies)
Discussion started by: marcozd
9 Replies

5. Shell Programming and Scripting

Truncate table

Hi In unix able to connect to oracle database and create table ,when rerun ,if table exist ,truncate that table.Any idea how to do that a.sh ---- sqlplus -s datadmin/password <<EOF create table xx(col1 number, col2... ); exit; EOF I... (1 Reply)
Discussion started by: mohan705
1 Replies

6. UNIX for Advanced & Expert Users

*** Truncate certain field ***

I have a file in which I need to truncate 15th field to have only one character like Put --> P and if i have no value in 15th field, it should be "O" (Other) would really appreciate the reponses, thnx in advance:b: (2 Replies)
Discussion started by: sannmayaz
2 Replies

7. Shell Programming and Scripting

Truncate File contain

I have one file which first line is blank and second line has some data. $cat filename output: 30-MAY-07 I want to store 30-MAY-07 value in one variable. for that I wrote var="`head -2 filename`" It will give that result but I want to truncate the first line which is blank. plz help. (2 Replies)
Discussion started by: rinku
2 Replies

8. Shell Programming and Scripting

How to truncate as filesize?

Hello everybody it's me again. I have a procces that is writing in a 'file1' automatically but i want to truncate 'file1' to a filesize 'x' that mean if the 'file1' size is 'x' i want to delete the first lines while the last lines are being writed, that have sence? in the process are an... (1 Reply)
Discussion started by: Lestat
1 Replies

9. UNIX for Dummies Questions & Answers

truncate wtmp

I have AIX5.1 I have been trying to learn how to truncate the /var/adm/wtmp file. I have seen several things on google actually but don't quite understand. I also searched your forums but couldn't find it. one says this ">/var/adm/wtmp Is that all I do? I have a seperate question also. I was... (1 Reply)
Discussion started by: rocker40
1 Replies

10. UNIX for Dummies Questions & Answers

Truncate what is It?

what does this command do ? as in does this command just make sure everything in the file is executed? or does it flush the file? Actually this is used on a file in a progress database but I believe it is a unix command? (2 Replies)
Discussion started by: rocker40
2 Replies
Login or Register to Ask a Question