2014-06-18 53 views
0

使用mac.I有幾個文件夾包含png圖像。重命名列表中的osx文件

我也有他們的原始文件名稱(圖像)和我想重命名他們的名稱的列表。

任何人可以幫我一個腳本嗎? (我走過了所有方法都是模式匹配基礎,他們不提關於使用列表重命名的任何東西)

我有列表,這樣

「焦糖布丁雲母」,「E2DBCF CSV 「

舊名是‘焦糖布丁Mica.png’和新的名稱應該是‘E2DBCF.png’。像這樣,我有數百個文件

+0

你能告訴我們該文件的一些行嗎? – Mortezaipo

+0

好吧讓我編輯問題 – humblePilgrim

+0

我編輯了問題 – humblePilgrim

回答

0
sed -e "s/^\"\([^\"]*\)\",\"\([^\"]*\)\"$/mv '\1' '\2'/" | sh 

...只要你不有換行符或單引號或雙引號文件名稱。

取出| sh進行測試。

+0

好吧,我會嘗試...我的文件名有空格btw – humblePilgrim

+0

空格很好,只是不引用(因爲他們需要逃脫)或換行符(因爲'sed'不能很好地處理數據,這不是純粹的行無需額外的努力)。 – tripleee

0

試試:

#!/bin/bash 
renamed=0 
failed=0 
while IFS=',' read old_name new_name; do 
    old_name=`echo ${old_name}.png | sed 's/\"//g'` 
    new_name=`echo ${new_name}.png | sed 's/\"//g'` 
    if [ -e "$new_name" ]; then 
     mv "$new_name" "$old_name" 
     #echo "$new_name renamed to $old_name" 
     renamed=$[$renamed+1] 
    else 
     #echo "$new_name not found!" 
     failed=$[$failed+1] 
    fi 
done < "myfile" 
echo "success renamed: $renamed" 
echo "failed rename: $failed" 

通過IFS我添加一個分隔符,將節省在new_name變量old_name第一值和第二值。 然後通過sed命令我將"替換爲無值。然後檢查文件是否存在,然後mv命令將new_name替換爲old_name。最後它會告訴你數字爲successfailed的動作。

注意:它在當前目錄中工作,除了在文件名中添加目錄地址。

+0

我是新來的..你能解釋一下工作嗎? – humblePilgrim

+0

@MithunMadhav對不起,我更新了帖子。覈實。注意:我在Linux平臺上嘗試過。希望它適合你。 – Mortezaipo

+0

@MithunMadhav你應該把'myfile'改成你的文件名。 – Mortezaipo