2013-05-08 132 views
11

我有一種情況,我需要每天在Xsan的文件夾中搜索超過400個文件,並用文件名中的低分代替空格。從文件夾中的文件名中刪除空格

有沒有人有腳本,我可以通過終端運行,例如,將爲我做這個?

回答

30

在這裏,你走了,這個循環遍歷當前目錄下的所有文件(和文件夾):

for oldname in * 
do 
    newname=`echo $oldname | sed -e 's/ /_/g'` 
    mv "$oldname" "$newname" 
done 

請注意,這將覆蓋具有相同名稱的文件。也就是說,如果有兩個文件具有相同的文件名,但其中一個文件具有下劃線,另一個文件具有空格。在那種情況下,具有下劃線的那個將會被具有空格的那個覆蓋。這個較長的版本會跳過這些情況:

for oldname in * 
do 
    newname=`echo $oldname | sed -e 's/ /_/g'` 
    if [ "$newname" = "$oldname" ] 
    then 
    continue 
    fi 
    if [ -e "$newname" ] 
    then 
    echo Skipping "$oldname", because "$newname" exists 
    else 
    mv "$oldname" "$newname" 
    fi 
done 
+0

mv命令中雙引號的功能是什麼?那條線相當於mv $(oldname)$(newname)嗎? – 2016-08-11 04:16:26

+0

沒有雙引號,帶空格的文件名會導致問題。不,不等同。 '$()'語法用於命令替換:https://en.wikipedia.org/wiki/Command_substitution – 2016-08-22 10:48:16

+1

ghhhaaaa我想要遞歸地做這件事,並且打所有的子類... – 2017-06-16 03:25:13