簡體   English   中英

linux:如何批量重命名文件夾名稱和文件夾下的文件名

[英]linux: how to batch rename folder name and the file name under folder

我需要一個幫助來完成一個腳本來重命名文件夾和。

例如:我當前的文件夾和文件如下:

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 "s@\(.*\)$filename@\1$newfilename@i"`
    sudo mv "$i" "$newpath"
    echo "${count}: Renaming $i to $newpath"
    let count++
done

非常感謝@susbarbatus!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM