ファイルを解凍してどのディレクトリを作成しますか?

ファイルを解凍してどのディレクトリを作成しますか?

目的:

a.zipunziponコマンドを使用してアーカイブを展開し、展開したUbuntu 12.10フォルダの名前を変数a.zipに割り当てます。bashv

a.zip複数のフォルダではなく単一のフォルダへの拡張を想定して保証します。

例:

unzip a.zipフォルダに展開された場合は返す必要があります./foo/echo $vfoo

私の環境:

GNU/Linux (kernel 3.5.0-25-generic)
Ubuntu 12.10    
bash v4.2.37(1)-release
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.

私の現在のソリューションは不幸with:Expand via unzip -d bar a.zipthenはv=$(ls -1 bar)正しい結果を提供しますが、ファイルシステムを混乱させます。

ベストアンサー1

ここにあります:

v=$(unzip a.zip | grep -m1 'creating:' | cut -d' ' -f5-)

説明する

  • $(...)キャプチャシェルです。その中のコマンドの出力をキャプチャして変数のように置き換えます。
  • コマンドの出力はunzipにパイプされてgrep引数が渡され、-m1最初の結果のみが返され、creating:ディレクトリが生成されたときにstdoutに印刷されるテキストの一部であるtextが返されます。パイプで接続された stdout で印刷します。unzipgrepcreating: foo/cut
  • cut2番目の列の後のすべての列を印刷するために使用されます(スペースで区切られています)。単語creating:の前にスペースがあるため、5から行末までを指定します。ディレクトリ名にスペースが含まれている場合は、行の最後まですべての列を使用しようとします。最終出力はfoo/

おすすめ記事