Zip コマンドは、ファイルを解凍するとディレクトリを生成します。

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ため、テキストファイルを表示するには5つのサブディレクトリに移動する必要があります$fileDir$todir$todir

zipファイルからテキストファイルを解凍したいのですが、そうでは$todirありません。

よろしくお願いします。

ベストアンサー1

ディレクトリ名を捨ててファイル名のみを保持する-jオプションzip(「ゴミパス」を意味)を使用できます。-j

また、単一のファイル名を渡すので、対応する-rオプション(「ディレクトリに再帰」)は必要ありません(ディレクトリツリー全体をzipファイルに保存したい場合は便利です)。-r-r

したがって、この行はディレクトリ名なしでzipファイルとしてファイルを保存するのに十分です。

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

もう1つのオプションは、ディレクトリパス全体をzipファイルに保存し続け、ファイルを解凍するときにコマンドにunzipオプションを渡して削除することです-j。これは、圧縮時にこのオプションがどのように機能するかと似ています。

おすすめ記事