有一些文件和文件夹包含单词apple
。
喜欢,
Root directory = AppleWorld
->AppleStore -> apple.png, appleStore
->StoreOfApple -> apples -> peaches.png apples.jpg
我想让一切apple
都orange
所以结果必须是
Root directory = OrangeWorld
->OrangeStore -> orange.png, orangeStore
->StoreOfOrange-> oranges -> peaches.png oranges.jpg`
因此,至少应该有 2 个操作apple
来Apple
orange
Orange
我尝试了所有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