Вы можете установить Cinnamon, который больше похож на рабочий стол Windows. Используйте эти шаги для его установки.
Вам просто нужно добавить -r для копирования всех подпапок и файлов, -r сделает это рекурсивно
cp -r source/folderX/src dest/folderX
С tar:
(cd source; tar c .) | tar x --transform 's:/src::' -C dest
cd source; tar c . создает архив tar из каталога source и отправляет его в канал, второй tar читает этот архив из канала, затем извлекает его (x) в каталог dest (-C dest), применяет команду sed s:/src:: к результирующему пути (удалите первое вхождение /src в пути) Это предполагает, что фактическое имя каталога source (и имя folder1, folder2 и т. д.) не содержит src.
Вы можете использовать for
for d in /path/to/source/*; do echo mkdir /path/to/dest/"$(basename $d)" && echo cp -rvb -- /path/to/source/"$d"/src/* /path/to/dest/"$(basename $d)"; done
Если вы делаете это из родительского каталога source и dest, вы можете использовать относительные пути:
for d in source/*; do echo mkdir dest/"$(basename $d)" && echo cp -rvb -- "$d"/src/* dest/"$(basename $d)"; done
После тестирования удалите echo, чтобы фактически скопировать файлы
for d in source/*; do mkdir dest/"$(basename $d)" && cp -rvb -- "$d"/src/* dest/"$(basename $d)"; done
Более читаемые ...
for d in /path/to/source/*; do
echo mkdir /path/to/dest/"$(basename $d)" &&
echo cp -rvb -- /path/to/source/"$d"/src/* /path/to/dest/"$(basename $d)"
done
Вам просто нужно добавить -r для копирования всех подпапок и файлов, -r сделает это рекурсивно
cp -r source/folderX/src dest/folderX
С tar:
(cd source; tar c .) | tar x --transform 's:/src::' -C dest
cd source; tar c . создает архив tar из каталога source и отправляет его в канал, второй tar читает этот архив из канала, затем извлекает его (x) в каталог dest (-C dest), применяет команду sed s:/src:: к результирующему пути (удалите первое вхождение /src в пути) Это предполагает, что фактическое имя каталога source (и имя folder1, folder2 и т. д.) не содержит src.
Вы можете использовать for
for d in /path/to/source/*; do echo mkdir /path/to/dest/"$(basename $d)" && echo cp -rvb -- /path/to/source/"$d"/src/* /path/to/dest/"$(basename $d)"; done
Если вы делаете это из родительского каталога source и dest, вы можете использовать относительные пути:
for d in source/*; do echo mkdir dest/"$(basename $d)" && echo cp -rvb -- "$d"/src/* dest/"$(basename $d)"; done
После тестирования удалите echo, чтобы фактически скопировать файлы
for d in source/*; do mkdir dest/"$(basename $d)" && cp -rvb -- "$d"/src/* dest/"$(basename $d)"; done
Более читаемые ...
for d in /path/to/source/*; do
echo mkdir /path/to/dest/"$(basename $d)" &&
echo cp -rvb -- /path/to/source/"$d"/src/* /path/to/dest/"$(basename $d)"
done