linux:如何批量重命名文件夹名称和文件夹下的文件名称

问题描述:

我需要一个帮助来完成脚本来重命名文件夹和。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 

因为它改变了文件夹名称,所以找不到下一个路径。我不知道如何让脚本从内部运行到外部而不是从外部运行到内部。

终于,我发现了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!