2012-09-07 71 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"))}' 
相關問題