Visit Our UNIX and Linux User Community


Scripting to convert underscores to spaces


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Scripting to convert underscores to spaces
# 1  
Old 10-17-2008
PHP Scripting to convert underscores to spaces

Greetings,

I have a bunch of music files that I want to strip the underscores out, and leave only spaces. All that I've found on the web is how to add underscores to files that have spaces, and reversing the "tr" command does not make a difference.

Here is how to convert spaces to underscores:

Code:
#!/bin/sh

ls | while read -r FILE
do
    mv "$FILE" `echo $FILE | tr ' ' '_' `
done

I am able to strip the underscores by typing:
Code:
ls | while read -r FILE
do
    mv "$FILE" `echo $FILE | tr -d '_'`
done

This gets rid of the underscores, but then there are no spaces in the filename (ex. 01_foo becomes 01foo).

The command to change underscores to spaces still eludes me.

Can you help me, or point me in the right direction...

Regards,
Bryan
# 2  
Old 10-17-2008
Clue:
Watch:
ant:/home/vbe/script $ mv tt titi tata
Usage: mv [-f] [-i] [-e warn|force|ignore] f1 f2
mv [-f] [-i] [-e warn|force|ignore] f1 ... fn d1
mv [-f] [-i] [-e warn|force|ignore] d1 d2
Why?

And now:
ant:/home/vbe/script $ mv tt titi\ tata
ant:/home/vbe/script $ ll titi*
-rw-rw-r-- 1 vbe bin 246 Sep 10 14:05 titi tata

I let you continue...
Good luck
# 3  
Old 10-17-2008
okay, now, how would one do that in a script? I do not have a "rename" command, as I am using OpenBSD. My "mv" command does not even have a "-e" switch

Would there be a way using "sed" vice "tr". I need this automated. I know how to use the escape "\" for spaces, but I have dynamic filenames.

Regards,
Bryan
# 4  
Old 10-17-2008
Hammer & Screwdriver You were close

Why not...
Code:
> echo "Paradise_By_The_Dashboard_Lights" | tr "_" " "
Paradise By The Dashboard Lights

However, I would express caution at not having some character other than a space in a filename. It can sometimes make file maintenance more cumbersome and also create strange filenames when they are downloaded to another system (you might see something like Paradise%20By%The...)
# 5  
Old 10-17-2008
If your shell supports parameter substitution use:

Code:
for i in *foo*
  do 
    mv  "$i" "${i//_/ }"
  done

else

Code:
for i in *foo*
  do 
   mv  "$i" "$(echo "$i" | sed 's/_/ /g')"
  done

# 6  
Old 10-17-2008
I should not use filenames with spaces... and the use of the -r option of read forebodes little good.Smilie
But...if you want to replace the underscores of the filenames with spaces this should be suffice:

Code:
#!/bin/sh

ls *_* | while read -r FILE
do
  mv "$FILE" `echo "$FILE" | tr '_' ' '`
done

Regards
# 7  
Old 10-17-2008
Quote:
Originally Posted by rubin
If your shell supports parameter substitution use:

Code:
for i in *foo*
  do 
    mv  "$i" "${i//_/ }"
  done

else

Code:
for i in *foo*
  do 
   mv  "$i" "$(echo "$i" | sed 's/_/ /g')"
  done

rubin, the "sed" solution seems the simplest... I was hoping to use "tr" for the solution. I guess I need to get out a "sed" tutorial and study up a little. You know, I got on so focused on figuring this out, that I'm not even sure if I need this now... Smilie Sorry for wasting the board's time. I'll do better next time...

Thanks for everyone's help...

Previous Thread | Next Thread
Test Your Knowledge in Computers #202
Difficulty: Easy
At compile time, the interpreter parses Perl code into a recursive flat-space module.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert mutiple spaces file to single tab

I have the following file I wanted to convert mutiple spaces to tab: I tried cat filename | tr ' ' '\t' or sed 's/ */ /' FILE but it looses the format 5557263102 5557263102 5552074858 5726310211 5557263102 5557263102 5557263103 5557263103 2142406768 ... (2 Replies)
Discussion started by: amir07
2 Replies

2. Shell Programming and Scripting

Replace spaces with underscores up to first comma but not after the comma

I have a comma delimited file of major codes and descriptions. I want to replace all occurrences of spaces with underscores up to the first comma (only in the first field), but not replace spaces following the comma. For instance I have the following snippet of the file: EK ED,Elementary and... (7 Replies)
Discussion started by: tdouty
7 Replies

3. Shell Programming and Scripting

No. of underscores in a file name

Hi I want to filter my files which has more than 1 underscores in it.how can i achieve this. Ex: if my file name is a_b_c, a_b. my command should result only a_b_c Thanks Pracheth (10 Replies)
Discussion started by: pracheth
10 Replies

4. Shell Programming and Scripting

How to find no of underscores in a variable?

Hi i have a variable var=a_b_c i want command to find no. of underscores in a variable Thank you (7 Replies)
Discussion started by: pracheth
7 Replies

5. Shell Programming and Scripting

How to convert string into integer in shell scripting?

Hi All, sessionid_remote=$(echo "select odb_sessionid from sysopendb where odb_dbname='syscdr';" | sudo -u cucluster ssh ucbu-aricent-vm93 "source /opt/cisco/connection/lib/connection.profile; $INFORMIXDIR/bin/dbaccess sysmaster@ciscounity") for sid in $sessionid_remote;do if * ]];... (2 Replies)
Discussion started by: deeptis
2 Replies

6. Shell Programming and Scripting

Shell command to convert low values to spaces

I neead a script which converts low values to the spaces, When I used sed -e 's/\x00/\x20/g' inputfile command it is removing the low values but not replacing it with spaces. Please help me. Its Uregent. Thanks Sam (12 Replies)
Discussion started by: bsreee35
12 Replies

7. Shell Programming and Scripting

convert rows (with spaces) to columns

Hey all, I have a list in the format ; variable length with spaces more variable information some more variable information and I would like to transform that 'column' into rows ; variable length with spaces more variable information some more variable information Any... (8 Replies)
Discussion started by: TAPE
8 Replies

8. Shell Programming and Scripting

Cannot get to convert multiple spaces to one space

Hi Guys, I am using a Redhat Linux Centos machine and trying to convert multiple spaces in a file to one space. I am using: sed '/./,/^$/!d' input_file > output_file I also tried cat -s Both gave me no change in the output file. I tried this on cygwin and it worked... (7 Replies)
Discussion started by: npatwardhan
7 Replies

9. Shell Programming and Scripting

How to Rename/Convert Files in Shell Scripting?

Hi All, I want to Rename/Convert all the .doc files in to .pdf format. I am using the following Script. But the final output is not proper. ########################################## cd /u13/prepaid/ftpdata/INfiles/sap/ for name in `ls *.doc` do name1=`echo $name | sed -e... (11 Replies)
Discussion started by: hanu_oracle
11 Replies

10. UNIX for Dummies Questions & Answers

change spaces to underscores script !!!

Hi everybody! Im not good in scripting and I need a script to take all the files with spaces in their names and change it to underscores. alice cooper.mp3 >> alice_cooper.mp3 Thanks in advance. (2 Replies)
Discussion started by: piltrafa
2 Replies

Featured Tech Videos