すべてのファイルを同じ名前のディレクトリに抽出します。

すべてのファイルを同じ名前のディレクトリに抽出します。

Ubuntu16.04

次のファイルを含むディレクトリがありますzip

directory
|
|---zip1.zip
|---zip2.zip
|
...
|---zip_very_large_number.zip

今別のディレクトリがあります/home/usrname/anotherdir。すべてのファイルを抽出する方法はありますか/home/usrname/anotherdir

/home/usrname/anotherdir
|---zip1(directory)
|    |---_FILES_FROM_zip1.zip
|
|---zip2(directory)
|    |---_FILES_FROM_zip2.zip
|
|---zip3(directory)
|    |---_FILES_FROM_zip3.zip
|
...
|
|---zip_very_large_number(directory)
     |---_FILES_FROM_zip_very_large_number.zip

これを行うためのきちんとした方法はありますかunzip?シェルスクリプトを書くことはできますが、あまり良く見えません...

答え1

unzip解凍のために一度に1つのzipファイルしか許可されていないため、これを行う簡単な方法はありません。次のような一種のシェルループを考えてみましょう。

for d in *.zip
do
  dir=/home/usrname/anotherdir/zip${d%%.zip}
  unzip -d "$dir" "$d"
done

答え2

これは現在のディレクトリのすべてのzipに対して機能する単一のライナーです。

for z in *.zip; do unzip "$z" -d "${z%".zip"}"; done

これをあなたのアイテムに追加できます。.bashrc

alias unzip_all='for z in *.zip; do unzip "$z" -d "${z%".zip"}"; done'

からインスピレーションを受ける:

Method #2: Unzipping Multiple Files from Linux Command Line Using Shell For Loop (Long Version)存在するhttps://www.cyberciti.biz/faq/linux-unix-shell-unzipping-many-zip-files/

関連情報