#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помощью ключа.)