如何从当前目录中的所有文件名中删除空格

时间:2012-09-07 08:17:14

标签: language-agnostic whitespace filenames

标题建议如何从当前目录中的所有文件中删除空格?

实施例

file name.mp3应该成为filename.mp3

注意:

  • 我愿意接受任何语言的答案。

6 个答案:

答案 0 :(得分:10)

我是python的忠实粉丝,所以这里有一个用于执行相同的python脚本

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

答案 1 :(得分:7)

with sh

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

使用perl 5.14(对于旧版本,将y/ //dr替换为do{($x=$_)=~y/ //d;$x}

# 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));
        }
    }
}

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

仅当旧文件名包含空格时,才会重命名旧文件 并且新文件尚不存在。

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

答案 5 :(得分:1)

由于你是语言不可知的,这里有一个红宝石的单行:

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