Поскольку вы знаете, что zip-файл содержит нежелательную папку верхнего уровня, и, поскольку вы знаете имя этой папки верхнего уровня, вы можете использовать символическую ссылку, чтобы все содержимое этой папки отображалось в родительском элементе следующим образом:
ln -s . 'data/All CRGs'
unzip 'All CRGs.zip' -d data
Шаг ln вызывает создание папки data/All CRGs на текущий каталог (относительно data/), который является data/ . Затем, когда вы извлекаете файлы из All CRGs.zip и команда unzip пытается создать data/All CRGs/file.dat , этот файл будет создан как data/./file.dat .
Эту технику можно продемонстрировать без zip-файла, используя touch:
$ mkdir data
$ ln -s . data/subdir
$ touch data/subdir/foo.txt
$ ls data
foo.txt subdir
Вы также можете использовать этот трюк для извлечения определенных файлов или папок в альтернативную папку:
ln -s /tmp data/subdir2
Тогда все, что находится в архиве, извлекаемом в subdir2 , появится в /tmp .