Вашему циклу for
нужно указать, что итерировать. Вы просто указываете каталог верхнего уровня:
...
DEST=/home/pc/Desktop
for folder in $DEST
...
Это должно включать подстановочный знак, чтобы Bash знал, что вам нужны все каталоги под ним:
...
DEST=/home/pc/Desktop
for folder in "$DEST"/*
...
Пример
$ mkdir -p Folder/SubFolder{1,2,3}
$ tree Folder/
Folder/
├── SubFolder1
├── SubFolder2
└── SubFolder3
3 directories, 0 files
Ваша команда:
$ for i in Folder/;do echo "$i";done
Folder/
со звездой (*
):
$ for i in Folder/*;do echo "$i";done
Folder/SubFolder1
Folder/SubFolder2
Folder/SubFolder3
Использование find
Вместо использования for
для генерации каталогов до tar
, вы можете использовать find
вместо этого следующим образом:
$ find Folder/ -mindepth 1 -maxdepth 1 -type d | xargs -I {} tar zcvf {}.tar.gz {}
Folder/SubFolder3/
Folder/SubFolder1/
Folder/SubFolder2/
$ ll Folder/
total 24
drwxr-xr-x 2 root root 4096 Sep 4 07:30 SubFolder1
-rw-r--r-- 1 root root 122 Sep 4 08:01 SubFolder1.tar.gz
drwxr-xr-x 2 root root 4096 Sep 4 07:30 SubFolder2
-rw-r--r-- 1 root root 122 Sep 4 08:01 SubFolder2.tar.gz
drwxr-xr-x 2 root root 4096 Sep 4 07:30 SubFolder3
-rw-r--r-- 1 root root 122 Sep 4 08:01 SubFolder3.tar.gz