Intereting Posts

Команда Zip, создающая каталог при разархивировании файла

Создаю zip-файл в сценарии, когда я запускаю сценарий и захожу в целевую папку и распаковываю zip-файл, созданный мной в сценарии, он создает каталог и распаковывает файл в этом каталоге.

Ниже приведен код в сценарии.

for fname in `cat $Filenm` do echo $fname fnme=$(echo ${fname}|awk -F\/ '{print $8}') echo $fnme>>$scriptLog tofilename="${date_new}_${fnme}" zip -r $tofilename.zip $fileDir/$fnme rm $fileDir/$fnme mv $tofilename.zip $todir 

Когда я иду к $todir после выполнения скрипта и распаковываю $tofilename.zip , он создает $fileDir в $todir и $todir файл туда, поэтому в $todir мне нужно перейти в 5 подкаталогов, чтобы увидеть мой текстовый файл. ,

Я хочу, чтобы текстовый файл в zip-файле был разархивирован в $todir , но не так, как это происходит.

Заранее спасибо.

Вы можете использовать опцию -j для zip ( -j для «путей нежелательной почты»), которая отбрасывает имя каталога и сохраняет только имя файла.

Кроме того, вам не нужна опция -r ( -r для “recurse to directoryies”), так как вы передаете ему одно имя файла (опция -r полезна, когда вы хотите сохранить целое дерево каталогов в zipfile). .)

Таким образом, этой строки должно быть достаточно для сохранения файла в zip-файле без имени каталога:

 zip -j $tofilename.zip $fileDir/$fnme 

Другой вариант – сохранить полный путь к каталогу в zip-файле и просто отбросить его при распаковке, передав команду unzip параметр -j , который работает аналогично тому, как работает этот параметр при архивировании.