On Mon, Apr 18, 2011 at 02:12:10AM +0000, [email protected] wrote:
> 
> ----- Original Message -----
> From: "Rogan Creswick" <[email protected]>
> To: "Rich Shepard" <[email protected]>, "General Linux/UNIX discussion 
> and help, civil and on-topic" <[email protected]>
> Cc: [email protected]
> Sent: Sunday, April 17, 2011 5:00:52 PM
> Subject: Re: [PLUG] Mass Removal of White Space in File Names
> 
> On Sun, Apr 17, 2011 at 4:44 PM, Rich Shepard <[email protected]> 
> wrote:
> >   I have two directories of images where each file name has spaces between
> > the words. I'm not having success writing a shell script that takes each
> > name in sequence, removes the white spaces, and leaves the extension as-is.
> > I'm certain that this can be done in perl, python, ruby, scheme, awk, sed,
> > and so on. I believe that a shell script would be a one-liner.
> 
> There is as perl script called 'rename' that makes this very easy:
> 
> $ rename 's/ //g' Some\ File\ Name.ext
> 
> Will take the spaces out (destructively, so be careful.  I don't know
> how it handles filename conflicts that may arise, I suspect not
> gracefully.).  Combined with find and xargs, you can apply it to a
> whole directory tree (I haven't tested the following line though, so
> beware of typos/etc..):
> 
> $ find <path> -type f | xargs rename 's/ //g'

if you're going to go that route:
    it's safer to replace the spaces with underlines so 's/ /_/g' 
    the find/xargs will still choke on files with spaces in the names, 
    however the syntax to work with that is find ... -print0 | xargs -0 which 
then uses NULL as the file name delimiter
    so:  find <path> -type f -print0 | xargs -0 rename 's/ /_/g'

    add -v to rename so it will print out the names of the files it changes
    use -n to not actually rename, but to show what it would have done

> On debian my debian system, 'rename' is a symlink to
> /etc/alternatives/rename, which points to /usr/bin/prename, which
> apt-file says came with perl.  If you don't have 'rename', try
> 'prename'.
> 
> There are also probably other programs called rename.  This is what I
> get if I run 'rename' with no arguments:
> 
>  $ rename
> Usage: rename [-v] [-n] [-f] perlexpr [filenames]
> 
> --Rogan
> 
> 
> 
> Be careful, rename on Ubuntu is different that that on OpenSuSE.  The command 
> line above with an expression is an OpenSuSE style command.  Also be aware of 
> spaces in directories that are parents of the target file.  I'll post a perl 
> script I wrote to deal with this as soon as I am in front of that machine.
> 
> _______________________________________________
> PLUG mailing list
> [email protected]
> http://lists.pdxlinux.org/mailman/listinfo/plug

-- 
      Michael Rasmussen, Portland Oregon  
  Trading kilograms for kilometers since 2003
    Be appropriate && Follow your curiosity
          http://www.jamhome.us/
The Fortune Cookie Fortune today is:
The World Watch just released a report that showed that they 
thought animal agriculture was responsible for 18 percent of 
greenhouse gases, but it turns out it's 51 percent.
    ~ Jonathan Foer
_______________________________________________
PLUG mailing list
[email protected]
http://lists.pdxlinux.org/mailman/listinfo/plug

Reply via email to