2012-09-07 74 views
1

正如标题所示,我如何从当前目录中的所有文件中删除空格?如何从当前目录中的所有文件名中删除空格

file name.mp3应该成为filename.mp3

注:

  • 我愿意在任何语言的答案。
+0

是否有可能会将两个原始文件缩减为相同的文件名?例如。 '文件名a.mp3'和'文件名a.mp3'。 – chepner

+0

我不担心冲突,这可能是另一个问题。 – Gautam

+0

JVM Lang解决方案如何? – Gautam

回答

6

与SH

for file in *' '*; do [ -f "$file" ] && mv "$file" "`echo $file|tr -d '[:space:]'`"; done 

用Perl 5.14(由do{($x=$_)=~y/ //d;$x}旧版本替换y/ //dr

# Linux/Unix 
perl -e 'rename$_,y/ //drfor<"* *">' 
# Windows 
perl -e "rename$_,y/ //drfor<'* *'>" 

与Java

import java.io.File; 

public class M { 

    public static void main(String[] args) { 
     String o,n; 
     for (File old : new File(".").listFiles()) { 
      o=old.getName(); 
      if (!o.contains(" ")) continue; 
      n=o.replaceAll(" ", ""); 
      old.renameTo(new File(n)); 
     } 
    } 
} 
+0

你可以使用bash here-strings来使它变得有点整洁:'mv“$ file”$(tr -d'[:space: ]'<<< $ file)' - 因为我们删除了空格,所以我们不必担心引用新的文件名 –

+0

我知道,但它不适用于sh,在OP之后发表评论使用sh –

+0

啊,他从问题标签中删除了bash。 –

2
for i in * ; do 
    if [ "$i" != ${i//[[:space:]]} ] ; 
    then 
    mv "$i" "${i//[[:space:]]}" 
    fi 
done 

${i//[[:space:]]}删除字符串中的所有空间。

+0

如果确实需要引用'$ i',实际上包含空格。 – chepner

+0

以及它适用于我没有引号,我正在使用zsh – Gautam

+0

那么为什么你的问题标签'bash'?他们是两个不同的壳。 – chepner

1
ls -1 | awk '/ /{a=$0;gsub(/ /,"");b="mv \""a"\" "$0;system(b);}' 
+0

'ls -1 | awk'//{a = $ 0; gsub(/ /,“”); b =“mv \”“a”\“”$ 0; system(b);}' /bin/sh:1:Syntax error: “(”意外的 /bin/sh:1:语法错误:“(”意外的 /bin/sh:1:语法错误:“(”意外的“ 引发上述错误 – Gautam

+0

awk的版本是什么.if solaris然后你可以使用nawk – Vijay

+0

我使用Ubuntu的12.04与mawk 1.3.3 – Gautam

1

这ONL重命名旧文件y如果旧文件名包含空格 并且新文件尚不存在。

for old in *; do 
    new="${old//[[:space:]]}" 
    [[ $old = $new || -f $new ]] || mv "$old" "$new" 
done 
7

我是蟒蛇的大风扇,所以在这里是做同样的

import os 
for f in os.listdir("."): 
    r = f.replace(" ","") 
    if(r != f): 
     os.rename(f,r) 
+1

['os.rename'](http://docs.python.org/library/os.html#os.rename)比直接调用'mv' –

+0

'os.rename'要好。 – Gautam

1

既然你是语言无关的Python脚本,这里有一个红宝石一行代码:

ruby -e 'Dir.foreach(".") {|f| f.count(" \t") > 0 and File.rename(f, f.delete(" \t"))}' 
相关问题