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

时间:2017-09-26 14:21:31

标签: bash cygwin mv

我在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

1 个答案:

答案 0 :(得分:2)

解决方案

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

mv sourceFile destinationFile

不要忘记引用,因为你有空格:

mv "$jay" "$jay2"

替代

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

rename 's/ //g' *

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