(Windowsマシンで作成された)ZIPファイルのディレクトリがあります。を使用して手動で解凍できunzip filename
ますが、シェルを使用して現在のフォルダー内のすべてのZIPファイルを解凍するにはどうすればよいですか?
Ubuntu Linux Serverを使用する。
(Windowsマシンで作成された)ZIPファイルのディレクトリがあります。を使用して手動で解凍できunzip filename
ますが、シェルを使用して現在のフォルダー内のすべてのZIPファイルを解凍するにはどうすればよいですか?
Ubuntu Linux Serverを使用する。
回答:
このリンクによると、これはbashで動作します:
\ *。zipを解凍します
ワイルドカードをエスケープするには、引用符をいくつか入れてください。
unzip "*.zip"
次のbashスクリプトは、現在のディレクトリにあるすべてのzipファイルを、zipファイルのファイル名を持つ新しいディレクトリに抽出します。
以下のファイル:
myfile1.zip
myfile2.zip
に抽出されます:
./myfile1/files...
./myfile2/files...
シェルスクリプト:
#!/bin/sh
for zip in *.zip
do
dirname=`echo $zip | sed 's/\.zip$//'`
if mkdir "$dirname"
then
if cd "$dirname"
then
unzip ../"$zip"
cd ..
# rm -f $zip # Uncomment to delete the original zip file
else
echo "Could not unpack $zip - cd failed"
fi
else
echo "Could not unpack $zip - mkdir failed"
fi
done
"
たファイル名に
* .zipを解凍するか、サブフォルダにある場合は次のようにします
find . -name "*.zip" -exec unzip {} \;
gzip'ed
ファイル、使用gunzip -rfk .
それぞれのフォルダ内の再帰的な解凍のために
すべての.zip
ファイルを解凍し、ファイルと同じ名前で同じフォルダーに新しいフォルダーにコンテンツを保存し.zip
ます。
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
これは@phatmanaceの回答の拡張であり、@ RishabhAgrahariのコメントに対応しています。
これにより、現在のディレクトリにあるすべてのzipファイルが抽出されます。zipファイル(サブフォルダーにある)をそれぞれのサブフォルダーに抽出するにはどうすればよいですか?
gzip'ed
ファイル、使用gunzip -rfk .
それぞれのフォルダ内の再帰的な解凍のために
find: illegal option -- n
使用してUnZipを6.00誰が- ?
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
ディレクトリリストを忘れました。
どのPOSIXシェルでも、これは各zipファイルごとに異なるディレクトリに解凍されます。
for file in *.zip
do
directory="${file%.zip}"
unzip "$file" -d "$directory"
done
for file in *.zip; do unzip "$file" -d "${file%.zip}"; done
これを使って:
for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done
for file in 'ls *.zip'; do unzip "${file}" -d "${file:0:-4}"; done
for file in *.zip; do ...
正しい方が安全ですか?
これは、ディレクトリを再帰的にループして特定の拡張子を持つファイルを削除する方法を使用するPedro Lobito 回答のバリアントです。
shopt -s globstar
root_directory="."
for zip_file_name in **/*.{zip,sublime\-package}; do
directory_name=`echo $zip_file_name | sed 's/\.\(zip\|sublime\-package\)$//'`
printf "Unpacking zip file \`$root_directory/$zip_file_name\`...\n"
if [ -f "$root_directory/$zip_file_name" ]; then
mkdir -p "$root_directory/$directory_name"
unzip -o -q "$root_directory/$zip_file_name" -d "$directory_name"
# Some files have the executable flag and were not being deleted because of it.
# chmod -x "$root_directory/$zip_file_name"
# rm -f "$root_directory/$zip_file_name"
fi
done
使用する
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
Linuxでフォルダを解凍する