Как можно рекурсивно переименовывать каталоги без sed или переименования?

Я пытаюсь переименовать несколько каталогов, содержащих «Лихорадку», чтобы вместо них было «Малярия». Инструкция сделать это без sed и переименования. Пока что мои ошибки включают в основном такие строки, как mv: cannot stat 'retest / Section-01 \ nretest / Section-02 \ nretest / Section-03 \ nretest / Section-04': Нет такого файла или каталога .

Лучшее, что сделал мой код, - это переименование каталогов на первом уровне.

Вот моя структура каталогов:

Fever-A / Malaria-AA

Fever-B / Fever-BA

Fever-B / Fever-BB

Fever-C / Malaria-A

Fever-C / Fever-CA

Fever-C / Fever-CB

Fever-C / Fever-CCC

Fever-D / Malaria-A

Fever-D / Malaria-B

Вот код, который у меня есть:

#!/bin/bash

# Access directory
#cd $1

# Find all subdirectories in $1 and load up array
all=($(find $1 -type d))
#echo ${all[@]}

# Loop through directories above
for dir in ${all[@]}
do
    # echo "$dir"
    cd $dir
    # List files with "Section" in name
    subdir=(:"Section*")

    # A second loop for directories in each dir with "Section*"
    for item in ${subdir[@]}
    do
            echo $item
            echo "--------------------"

            # Rename operation
            mv $item ${item//Fever/Malaria}
    done
    cd $1
done

Другой подход, который я рассмотрел, - это использование такой функции, но она тоже не работает:

#!/bin/bash

rename(){
    old_names=($(find $1 -maxdepth 1 -type d))

    for item in ${old_names[@]}
    do
            if [[ $item = *Section* ]]; then
                    new_name=${item//Fever/Malaria}
                    mv $item $new_name
            elif [[ $1 != $item ]]; then
                    rename $item
            fi

            rename $1
    done
}

rename $1
0
29.07.2016, 01:59
0 ответов

Теги

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