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/