シェルとしてFedora17とbashを使用しています。ルートにフォルダが1つしかない特定のZipファイルがあります。つまりZipファイルを解凍すると、次のように表示されます。
> unzip myzip.Zip
> ls
myzip.Zip folderThatWasInsideZip
Zipファイルにパックされているフォルダが1つしかないことを知っているとしたら、どうすればわかりますか zipファイル内のメインフォルダの名前、実際にZipファイルを解凍せずに?
私は次のようなことを可能にするワンライナーを探しています:
> <command> myzip.Zip
folderThatWasInsideZip
Zip内のすべてのファイルをless
で一覧表示する方法があることは知っていますが、サブディレクトリなどのすべてのファイルを一覧表示します。1つのフォルダーの名前を知りたいだけです。私は基本的な何かが欠けていることを知っています。
このコマンドはあなたが望むことをするようです:
unzip -qql myzip.Zip | head -n1 | tr -s ' ' | cut -d' ' -f5-
またはGNU sed:
unzip -qql myzip.Zip | sed -r '1 {s/([ ]+[^ ]+){3}\s+//;q}'
unzip -Z
は Zipinfoモード を呼び出します。これは、同じ結果に対してunzip -Z -1 myzip.Zip | head -1
を呼び出すことができることを意味しますが、はるかに簡潔です。
次のシェルコマンドでそれを行うことができます:
unzip -qql myzip.Zip | head -n1 | awk '{print $4}'
これは、UNIXコマンドパイプラインです。 unzip -qql
Zipファイル内のファイルを一覧表示します。 head -n1
は最初の行を切り取り、awk '{print $4}'
は4番目のWordを出力します。
Zipファイルの最初のエントリにスペースが含まれていると正しく機能しないことに注意してください。通常、このようなコマンドの出力を処理することは悪い習慣ですが、迅速で汚い解決策としては問題ないかもしれません。