消除文件名中的空格并重命名(cywgin)

Eliminate spaces in filename and rename (cywgin)

我在 windows 之上使用 cygwin。 我有一个 windows 文件,其中包含带空格的文件。我想去掉字符之间的空格并重命名文件。

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

通常 bash 中的 mv 命令在 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

但是我不断收到这些错误。

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

解决方案

交换 $jay$jay2mv 命令使用第一个参数作为源,第二个参数作为目标:

mv sourceFile destinationFile

别忘了引用,因为你有 spaces:

mv "$jay" "$jay2"

备选

如果您安装了 rename,您可以使用以下命令替换您的脚本:

rename 's/ //g' *

s/ //g表示全局用空字符串(//)替换(s)space(/ /)(g ).
通配符 * 指定要重命名的文件,即工作目录中的所有文件。