2012-01-16 126 views
3

重命名文件我有一個目錄結構如下具有相同名稱的目錄名稱

dir----| 
     | 
     |--dir1\ some\ thing--result.pdf 
     | 
     |--dir2\ some\ thing--result.pdf 
     | 
     |--dir3\ some\ thing--result.pdf 
     | 

每個子目錄下的文件名是result.pdf。

作爲目錄dir1 dir2 dir3在其名稱中有空格。 我不能理解的東西(我正在寫一個bash腳本)如何在變量中使用這個目錄名並重命名result.pdf

我想重命名這個文件中的每個result.pdf,其名稱與目錄相同name.pdf

#!/bin/bash 
    for i in *;do 
    cd $i 
    mv result.pd $i.pdf 
    cd .. 
    done 

目錄名稱中的空格正在產生問題。如何結束這個?

+0

第1步:找到。 -exec rename'' - {} \;第2步:贏利 –

回答

7

嘗試引用名稱:

for i in *; do 
    mv "$i/result.pdf" "$i/$i.pdf" 
done 
+0

哦!我吮吸打字! +1 –

+0

@ypons感謝你的方法,但我還不清楚爲什麼我們需要使用雙引號。 –

+1

如果使用引號,那麼包含在其中的字符串將作爲一個參數賦予'mv'。所以'mv'知道它全部屬於同一個文件名。否則,如果有空白,它將導致兩個連續的參數爲'mv',因此'mv'將空白的左右部分作爲單獨的文件名。如果使用單引號,那麼引號內的內容不會被shell評估,所以$ i不會被展開,而是會保留$ i。這是單引號和雙引號之間的區別。 – ypnos

0

這個怎麼樣班輪 -

for i in *; do mv "$i/result.pdf" "$i/$i.pdf" ; done