更改目录下的多个文件/文件夹的名称

更改目录下的多个文件/文件夹的名称

有一些文件和文件夹包含单词apple

喜欢,

Root directory = AppleWorld
 ->AppleStore -> apple.png, appleStore 
 ->StoreOfApple -> apples -> peaches.png apples.jpg

我想让一切appleorange

所以结果必须是

Root directory = OrangeWorld
 ->OrangeStore -> orange.png, orangeStore 
 ->StoreOfOrange-> oranges -> peaches.png oranges.jpg`

因此,至少应该有 2 个操作appleAppleorangeOrange

我尝试了所有rename命令。

例如这些

find ./ -execdir rename 's/Apple*/*Orange*/' '{}' \;
find ./ -iname 'Apple*' -execdir mv -i '{}' 'Orange*' \;

但不起作用。我该怎么办?

答案1

方法

  • 将目录更改为您想要处理的目录树的顶部(更改目录和文件的名称)。

    cd top-of-target-directory-tree
    
  • 然后运行以下命令,试运行至查看进而去做如果检查结果良好,

    find . -depth -execdir rename -n 's/Apple/Orange/;s/apple/orange/' "{}" \;
    
    find . -depth -execdir rename 's/Apple/Orange/;s/apple/orange/' "{}" \;
    

测试示例

$ find
.
./Apple3
./Apple3/Apple4
./Apple3/apple4.1
./Apple3/Apple4/apple5
./apple1
./apple2
$ find -type d
.
./Apple3
./Apple3/Apple4

$ find -type f
./Apple3/apple4.1
./Apple3/Apple4/apple5
./apple1
./apple2

试运行

$ find . -depth -execdir rename -n 's/Apple/Orange/;s/apple/orange/' "{}" \; 
rename(./apple4.1, ./orange4.1)
rename(./apple5, ./orange5)
rename(./Apple4, ./Orange4)
rename(./Apple3, ./Orange3)
rename(./apple1, ./orange1)
rename(./apple2, ./orange2)

行动起来

$ find . -depth -execdir rename 's/Apple/Orange/;s/apple/orange/' "{}" \;

核实

$ find
.
./orange1
./Orange3
./Orange3/Orange4
./Orange3/Orange4/orange5
./Orange3/orange4.1
./orange2

相关内容