2015-11-13 286 views
3

我需要一個幫助來完成腳本來重命名文件夾和。linux:如何批量重命名文件夾名稱和文件夾下的文件名稱

如:我目前的文件夾和文件象下面這樣:

Gideon/gideon_lisha/Gideon_samuel/Gideon_nathan.xml 
Gideon/lisha_gideon/Gideon_noah.xml 
... 

我想一個shell命令將它們像下面命名:

Liang/Liang_lisha/Liang_samuel/Liang_nathan.xml 
Liang/lisha_Liang/Liang_noah.xml 
... 

我綁:

#!/bin/bash 

path=$1 
filename=$2 
newfilename=$3 

echo "We are finding '$filename' under the folder '$path'" 

count=1 

for i in `find $path -iname *$filename*` 

do 
    newpath=`echo $i | sed "s/$filename/$newfilename/g"` 
    sudo mv "$i" "$newpath" 
    echo "${count}: Renaming $i to $newpath" 
    let count++ 
done 

但該腳本將停止:

Liang/gideon_lisha/Gideon_samuel/Gideon_nathan.xml 

因爲它改變了文件夾名稱,所以找不到下一個路徑。我不知道如何讓腳本從內部運行到外部而不是從外部運行到內部。

回答

2

終於,我發現了anwser:

#!/bin/bash 

path=$1 
filename=$2 
newfilename=$3 

echo "We are finding '$filename' under the folder '$path'" 

count=1 
for i in `find $path -iname "*$filename*" | tac` 
do 
    newpath=`echo $i | sed "[email protected]\(.*\)[email protected]\[email protected]"` 
    sudo mv "$i" "$newpath" 
    echo "${count}: Renaming $i to $newpath" 
    let count++ 
done 

真的謝謝@susbarbatus!

相關問題