web-dev-qa-db-ja.com

同じ名前のフォルダに解凍します

ファイルを解凍する方法(例:foo.Zip)を同じ名前(foo/)?

基本的に、ファイルを同じ名前のフォルダーに(現在のフォルダーではなく)解凍するunzipのエイリアスを作成します。これがMacのunzipユーティリティが機能する方法であり、CLIでも同じようにしたいと思っています。

9
Emanuil Rusev

これには unar を使用します。デフォルトでは、アーカイブに複数のトップレベルのファイルまたはディレクトリが含まれている場合、抽出されたコンテンツを格納するためのディレクトリが作成されます。

unar foo.Zip

-dオプションを使用すると、すべての場合にディレクトリを強制的に作成できます。

unar -d foo.Zip

または、関数はunzipを使用してこれを実行できます。

unzd() {
    if [[ $# != 1 ]]; then echo I need a single argument, the name of the archive to extract; return 1; fi
    target="${1%.Zip}"
    unzip "$1" -d "${target##*/}"
}

target=${1%.Zip}

この行は、.Zip拡張子を削除します。他のことは考慮されません(つまり、foo.Zipfooになり、~/foo.Zip~/fooになります)。の

${target##*/}

展開すると、最後の/までが削除されるため、~/foofooになります。これは、関数が.Zipファイルを現在のディレクトリ内のそれにちなんで名付けられたディレクトリに抽出することを意味します。代わりに、アーカイブをその横のディレクトリに抽出する場合は、unzip $1 -d "${target}"を使用します。

11
Stephen Kitt

nzip -d exdir zipfile.Zipを使用して、zipファイルを特定のディレクトリに抽出します。原則として、あなたの投稿を文字通り読むことから、次のような関数を書くことができます:

unzip_d () {
    unzip -d "$1" "$1"
}

。Zip拡張子を削除したいので、特別な変数構文を使用してそれを行うことができます:

unzip_d () {
    zipfile="$1"
    zipdir=${1%.Zip}
    unzip -d "$zipdir" "$zipfile"
}
8
Silas Coker