Измените имя нескольких файлов/папок в соответствии с каталогом

Существуют некоторые файлы и папки, содержащие слово 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*' \;

но не работал. Что я могу сделать?

3
задан 8 June 2018 в 10:37

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
3
ответ дан 1 December 2019 в 16:17

Другие вопросы по тегам:

Похожие вопросы: