for dir in A/B/C/*/; do
name=$(basename "$dir")
tar -cv -f "$name.tar" -C A/B/C "$name"
done
Это создаст архив для каждого отдельного (не -скрытого )подкаталога в A/B/C
. Архивы будут созданы в текущем каталоге.
Опция -C
позволяет tar
установить рабочий каталог для следующих файлов($name
).
Вы можете использовать -C "$(dirname "$dir")"
вместо -C A/B/C
для более общего кода.
Для создания архивов в подкаталоге C
( cd A/B/C &&
for dir in */; do
tar -cv -f "${dir%/}.tar" "$dir"
done )
Подоболочка вокруг всей команды предотвращает изменение рабочего каталога в остальной части оболочки/скрипта, а ${dir%/}
удаляет косую черту в конце значения в $dir
.
К сожалению, опция -C
не влияет на рабочий каталог для архивного файла, указанного в -f
, иначе мы могли бы просто переместить бит -C
перед опцией -f
.
Альтернативно, как вариант первого цикла:
for dir in A/B/C/*/; do
name=$( basename "$dir" )
( cd "$( dirname "$dir" )" && tar -cv -f "$name.tar" "$name" )
done
Ничего сложного. Не нужно ничего усложнять!
sudo mount /dev/sda7 /mnt
sudo grub-install --root-directory=/mnt /dev/sda
А потом:
sudo update-grub --output /mnt/boot/grub/grub.cfg
Но после этого у меня на винде лишний Диск E с папкой EFI. Ну и хрен с ним