FreeBSD - Tutorials, Security
Home   Archives   Sitemap   About   Contact

Unix,Linux,FreeBSD - How to rename a list of files, replacing spaces inside their names

Home NEW! Unix Forum News 100 Tips and Tricks Website Development Server Operating Systems Databases
 Ivorde.ROarrow Server Operating Systems arrowAdministration GuidesarrowUnix,Linux,FreeBSD - How to rename a list of files, replacing spaces inside their names 

Article Sections

    Hello, Guest !
User name:
Password:
 
Google

 SSD VPS Hosting - Vpsie.com
 Mo.nitor.me
 Ivorde forum
 FreeBSD Tutorials
 Linux LVM Commands
 Free Shell Accounts
 FreeBSD Project
 FreeBSD Handbook
 Advanced Bash-Scripting Guide
 The OpenBSD Project
 Distrowatch
 FreeBSD Handbook


Apache Webserver Home Page

Posted on: 12 Jun 2008
Author: mandrei
Section: Server Operating Systems | Administration Guides
Views: 1349
Comments: 0 (Add)

Unix,Linux,FreeBSD - How to rename a list of files, replacing spaces inside their names
Unix - How to rename a list of files, replacing spaces inside thir names, replace spaces in file names, remove empty space in file name

 



There are a few ways of renaming a list of files, replacing the spaces inside their names with underscore (_) or dashes (-) or whatever.

Here's the method I used:

1) The list of files from before replacement

# ls
07 . Paul Van Dyk feat. Rea Garvey - Let Go.mp3
08. Alex Gaudino - Watch Out (Radio Edit) www.MuzicaFm.net.mp3

2) The loop that does the replacement:

ls *.mp3 | sed 's/ /|/g' replaces spaces " " with pipes "|" in the output of ls command ( I choosed pipe because no file had in it's name's componence this special char) so that the for loop will take line by line, not word by word, separated by space. Next in the old variable it is set the name of the file (replacing the pipe back to space). Now that the old name of the file is set correctly, we move the file (mv "$old") to a new file called `echo $i | sed /s/|/_/g'`, meaninga new file that instead of pipe (|) it has underscore (_).

# for i in `ls *.mp3 | sed 's/ /|/g'`
do
old=`echo $i | sed 's/|/ /g'`
new=`echo "$i" | sed 's/|/_/g'`
mv -f "$old" "$new"
done

Note: This method will not work on all filenames. If one of the files in the list contains a pipe (|) in it's name before running this command, then this file will most probably fail to be renamed so there would be 2 options: rename manually this file or not using the pipe as delimiter, but rather a combination of special chars, like "/|" or something similar that is very unprobably to be in the composition of an existing file.

3) The new list of files after they all've been renamed and spaces replaced with underscores

# ls
07_._Paul_Van_Dyk_feat._Rea_Garvey_-_Let_Go.mp3
08._Alex_Gaudino_-_Watch_Out_(Radio_Edit)_www.MuzicaFm.net.mp3

I've also tested this with ls|xargs, find -print|xargs and -J option but nothing worked like this method.

Bookmarks: Echo "Unix,Linux,FreeBSD - How to rename a list of files, replacing spaces inside their names" around:
del.icio.usdiggFurlYahooMyWebGoogleBookmarksFaceBookTechnocratti
-------------------advertising-----------------

Other articles in Server Operating Systems / Administration Guides
» How to rename files/directories to uppercase/lowercase character names
» Substitute strings in files with perl, sed or vi(m)
» How to allow access to su to root on FreeBSD
» Print queues in AIX 5L - How to list print queues in AIX
» List established connections on Unix servers




Contact webmaster regarding this article
Register or Login to post your article
Hello, Guest ! You can Login or Register to www.ivorde.ro!

 Post comment:

Name:
Title:
Comment:
Please type the word you see in the image (anti-spam verification). Refresh the page if you don't understand the word.
Allowed HTML Tags for comments:<p><strong><em><u><h1><h2><h3><h4><h5><h6><img><li>
<ol><ul><span><div><br><ins><del>

0 comment(s) to Unix,Linux,FreeBSD - How to rename a list of files, replacing spaces inside their names:

   Latest topics on the forum:
 
   Most viewed articles:
How to copy a mysql database using mysqldump - 9647 views
How to change a user's password in AIX with the output from ECHO command - 8842 views
FreeBSD: Add/remove an additional IP alias - 5952 views
Qmail relay to smarthost: How to route all mail to a smarthost - 4093 views
Change user shell on FreeBSD Linux and AIX - 2951 views

   Latest 10 articles:
Qmail relay to smarthost: How to route all mail to a smarthost - 03 Feb 2009
EXIM 4 relay to smarthost: How to route all mail except local domain - 03 Feb 2009
Windows XP: print LISTEN ports and network connections using netstat - 30 Jan 2009
How to cut out first last n characters from each file name, from a filelist - 04 Nov 2008
Mozilla Firefox3 is now released - 18 Jun 2008
How to switch lower case to upper case and upper case to lower case in a string - 17 Jun 2008
How to rename files/directories to uppercase/lowercase character names - 17 Jun 2008
How to convert lower case to upper case letters in a shell script/command - 17 Jun 2008
Unix,Linux,FreeBSD - How to rename a list of files, replacing spaces inside their names - 12 Jun 2008
How to change a user's password in AIX with the output from ECHO command - 21 May 2008


Archives
» 2007  |  June  |  October  |  November  |  December
» 2008  |  January  |  February  |  March  |  April  |  May  |  June  |  November
» 2009  |  January  |  February



Home | Archives | Sitemap | About | Contact

Designed and developed by Andrei Manescu. Optimized for Mozilla Firefox.  
Copyright 2007 Andrei Manescu
All trademarks and copyrights on this page are owned by their respective owners. Comments are owned by those who posted them.
Valid W3 Document Valid XHTML 1.0 Transitional Valid CSS! The FreeBSD Project Viewable With Any Browser