Как переместить определенный шаблон вложенных папок в другую папку, сохраняя структуру с использованием bash?

#linux #bash #unix

#linux #bash #unix

Вопрос:

У меня есть набор папок, таких как:

 /path/to/group1/folder/number123
/path/to/group1/folder/number456
/path/to/group2/folder/number123
/path/to/group2/folder/number456
/path/to/group3/folder/number123
/path/to/group3/folder/number456  
 

И я хочу переместить папки, соответствующие /path/to/group*/folder/number123
базовой папке /path/toOther/ , чтобы после перемещения это выглядело так:

 /path/to/group1/folder/number456
/path/to/group2/folder/number456
/path/to/group3/folder/number456  

/path/toOther/group1/folder/number123
/path/toOther/group2/folder/number123
/path/toOther/group3/folder/number123  
 

Есть ли способ сделать это с помощью команды перемещения и подстановочных знаков, или для этого потребуется больше, чем 1 строка?

Комментарии:

1. cp Команда принимает только один каталог назначения. Итак, вам нужен цикл для перебора каталогов назначения.

Ответ №1:

Если вы не возражаете, напишите несколько строк:

 cd /path/to
for f in group*/folder/number123
do
    d="/path/toOther/${f%/*}"
    mkdir -p "$d"
    mv "$f" "$d/."
done
 

Конечно, вы можете объединить скрипт в одну строку. (Или bash сделает это, когда вы вспомните его с Upпомощью ключа.)