Как работать в директории внутри директории в bash - PullRequest
0 голосов
/ 01 мая 2018

Я работаю над переносом содержимого из каталога в его родительский каталог, и все это время, работая в другом каталоге. Если каждый каталог является слоем, я пытаюсь скопировать содержимое с 3-го уровня на 2-й уровень, а затем удалить этот 3-й слой. Пока что у меня есть:

for d in "$layer1"/*; do

    temp=$(removespaces "$d")

    layer2=$(removeExtension "$temp")

    cp -r "$d" "$layer2"

    rm -r "$d"

    for dir in "$layer2"/*; do

        cp "$dir" "$layer2"

        rmdir "$dir" #This is the third layer(directory)
    done

done

Начало 1-го цикла for - просто переименование каталога с некоторыми функциями, которые я объявил ранее, без проблем.

Как я могу скопировать содержимое этого 3-го слоя во 2-й слой?

1 Ответ

0 голосов
/ 01 мая 2018

Последний cp должен копировать отдельные файлы, а не каталог в целом.

cp "$dir"/* "$layer2"

Но вы можете сделать все это проще, используя mv, и использовать две подстановочные знаки в имени пути, чтобы получить 3-й уровень.

for d in "$layer1"/*; do
    temp=$(removespaces "$d")
    layer2=$(removeExtension "$temp")
    mkdir -p "$layer2"
    mv "$d"/*/* "$layer2"
    rmdir "$d"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...