スクリプトから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
。これは、圧縮時にこのオプションがどのように機能するかと似ています。