(Windows makinede oluşturulan) ZIP dosyaları bir dizin var. Bunları kullanarak manuel olarak açabiliyorum unzip filename, ancak geçerli klasördeki tüm ZIP dosyalarını kabuk aracılığıyla nasıl açarım?
Ubuntu Linux Server'ı kullanma.
(Windows makinede oluşturulan) ZIP dosyaları bir dizin var. Bunları kullanarak manuel olarak açabiliyorum unzip filename, ancak geçerli klasördeki tüm ZIP dosyalarını kabuk aracılığıyla nasıl açarım?
Ubuntu Linux Server'ı kullanma.
Yanıtlar:
Bu bağlantıya göre bu bash'de çalışır :
sıkıştırmayı aç \ *. zip
Sadece joker karakterden kaçmak için bazı alıntılar yapın:
unzip "*.zip"
Aşağıdaki bash betiği, geçerli dizindeki tüm zip dosyalarını zip dosyasının dosya adıyla yeni dizinlere çıkarır, yani:
Aşağıdaki dosyalar:
myfile1.zip
myfile2.zip
Ayıklanacak:
./myfile1/files...
./myfile2/files...
Kabuk betiği:
#!/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
"dosya adına tırnak ekleyin
unzip * .zip veya alt klasördeyse,
find . -name "*.zip" -exec unzip {} \;
gzip'eddosyaları kullanmak gunzip -rfk ., ilgili klasörlerin içindeki özyinelemeli unzipping için
Tüm .zipdosyaları açın ve içeriği, aynı adla ve .zipdosyayla aynı klasörde yeni bir klasörde saklayın :
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Bu @ phatmanace'nin cevabının ve @ RishabhAgrahari'nin yorumunun adreslerinin bir uzantısı :
Bu, geçerli dizindeki tüm zip dosyalarını ayıklayacaktır, eğer zip dosyalarının (alt klasörlerde bulunur) ilgili alt klasörlere çıkarılmasını istersem ne olur?
gzip'eddosyaları kullanmak gunzip -rfk ., ilgili klasörlerin içindeki özyinelemeli unzipping için
find: illegal option -- nkullanarak UnZip 6.00 kimseye -?
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;Dizin listesini unuttunuz.
Herhangi bir POSIX kabuğunda, bu her zip dosyası için farklı bir dizine açılır:
for file in *.zip
do
directory="${file%.zip}"
unzip "$file" -d "$directory"
done
for file in *.zip; do unzip "$file" -d "${file%.zip}"; done
Bunu kullan:
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 ...Doğru yapmak daha güvenli mi?
Bu bir çeşididir Pedro Lobito cevap kullanılarak , belirli uzantı öğretileri içeren dosyaları silmek için özyinelemeli bir dizinde nasıl döngü oluşturulacağını :
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
Bir dizindeki tüm dosyaları açmak için terminalde şu cmd'yi yazmanız yeterlidir:
unzip '*.zip'
kullanım
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
Linux'ta bir klasörü açmak için