I use cygwin on top of windows. I have a windows file that contains files with spaces. I want to get rid of the spaces between the characters and rename the files.
IMG_4089 - Copy - Copy.JPG
IMG_4089 - Copy.JPG
IMG_4092 - Copy - Copy.JPG
IMG_4092 - Copy (2).JPG
IMG_4092 - Copy.JPG
IMG_4093 - Copy - Copy.JPG
IMG_4093 - Copy (2).JPG
IMG_4093 - Copy.JPG
usually the mv command in bash works in linux
$ cat get_rid_of_spaces.sh
#!/bin/bash
IFS=$'\n' ;
for i in *
do
jay=$i ;
jay2=$(echo $i | sed -e "s/ //g")
echo $jay2 "--->" $jay
mv $jay2 $jay
sleep .5 ;
done
However I keep getting these errors.
IMG_4089-Copy-Copy.JPG ---> IMG_4089 - Copy - Copy.JPG
mv: cannot stat 'IMG_4089-Copy-Copy.JPG': No such file or directory
IMG_4089-Copy.JPG ---> IMG_4089 - Copy.JPG
mv: cannot stat 'IMG_4089-Copy.JPG': No such file or directory
IMG_4092-Copy-Copy.JPG ---> IMG_4092 - Copy - Copy.JPG
mv: cannot stat 'IMG_4092-Copy-Copy.JPG': No such file or directory
IMG_4092-Copy(2).JPG ---> IMG_4092 - Copy (2).JPG
mv: cannot stat 'IMG_4092-Copy(2).JPG': No such file or directory
IMG_4092-Copy.JPG ---> IMG_4092 - Copy.JPG
mv: cannot stat 'IMG_4092-Copy.JPG': No such file or directory
IMG_4093-Copy-Copy.JPG ---> IMG_4093 - Copy - Copy.JPG
mv: cannot stat 'IMG_4093-Copy-Copy.JPG': No such file or directory
IMG_4093-Copy(2).JPG ---> IMG_4093 - Copy (2).JPG
mv: cannot stat 'IMG_4093-Copy(2).JPG': No such file or directory
IMG_4093-Copy.JPG ---> IMG_4093 - Copy.JPG
mv: cannot stat 'IMG_4093-Copy.JPG': No such file or directory
mv
, but it has to be the second one...? Also, you have to quote the filenames with spaces.for i in *[[:space:]]*; do
to not even look at filenames that don't contain spaces at all. (If you useshopt -s nullglob
before that point, that will prevent the glob from expanding to itself if there are no matches).