Rimuovere Gli Spazi Dai Nomi Dei Files

Ecco alcuni script per rimuovere gli spazi dai nomi dei files:

questo e' il migliore, cerca ricorsivamente all'interno delle directory:

 #! /usr/bin/perl
 use File::Find;
 finddepth sub { # finddepth so directories are done AFTER their contents
                my $old = $_;
               tr/ /_/ or return; # don't do anything if you don't have spaces
               -e and return; # don't rename over an existing file!
               rename $old, $_ or warn "cannot rename $old to $_: $!";
               }, "."; # starting directory

altri ma non cosi' efficaci:

 #!/bin/bash
 #
 # Writen by Mayuresh Phadke (mayuresh at gmail.com)# To change the names of all files in a directory including directory names
 # run the command
 #
 #  find . -depth -exec ~/rename.sh {} ;
 #
 # This command is pretty useful if you have a collection of songs or pictures transferred
 # from your windows machine and you are finding it difficult to handle the
 # spaces in the filenames on UNIX
 #
 #set -x
 progname=`basename $0`
 if [ $# != 1 ]
 then
     echo "Usage: $progname \"file name with spaces\""
     echo
     echo "This utility is useful for renaming files with spaces in the filename. Spaces in the filename are replaced with _"
     echo "\"file name with spaces\" will be renamed to \"file_name_with_spaces\""
     echo
     exit 1
 fi
 old_name=$1
 dir=`dirname "$1"`
 file=`basename "$1"`
 new_file=`echo $file|sed "s/ /_/g"`
 new_name=$dir"/"$new_file
 if [ "$old_name" != "$new_name" ]
 then
        mv "$old_name" "$new_name"
 fi
 exit 0

Ecco un altro modo che cerca anche nelle sottocartelle:

 #!/bin/bash
 for b in *
  do 
    cd $b
    for a in *
     do 
       mv -v "$a" $(echo $a | sed 's/ /_/g')
     done 
  done