ファイルを解凍する方法(例:foo.Zip
)を同じ名前(foo/
)?
基本的に、ファイルを同じ名前のフォルダーに(現在のフォルダーではなく)解凍するunzipのエイリアスを作成します。これがMacのunzipユーティリティが機能する方法であり、CLIでも同じようにしたいと思っています。
これには 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.Zip
はfoo
になり、~/foo.Zip
は~/foo
になります)。の
${target##*/}
展開すると、最後の/
までが削除されるため、~/foo
はfoo
になります。これは、関数が.Zip
ファイルを現在のディレクトリ内のそれにちなんで名付けられたディレクトリに抽出することを意味します。代わりに、アーカイブをその横のディレクトリに抽出する場合は、unzip $1 -d "${target}"
を使用します。
nzip -d exdir zipfile.Zipを使用して、zipファイルを特定のディレクトリに抽出します。原則として、あなたの投稿を文字通り読むことから、次のような関数を書くことができます:
unzip_d () {
unzip -d "$1" "$1"
}
。Zip拡張子を削除したいので、特別な変数構文を使用してそれを行うことができます:
unzip_d () {
zipfile="$1"
zipdir=${1%.Zip}
unzip -d "$zipdir" "$zipfile"
}