(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'ed
dosyaları kullanmak gunzip -rfk .
, ilgili klasörlerin içindeki özyinelemeli unzipping için
Tüm .zip
dosyaları açın ve içeriği, aynı adla ve .zip
dosyayla 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'ed
dosyaları kullanmak gunzip -rfk .
, ilgili klasörlerin içindeki özyinelemeli unzipping için
find: illegal option -- n
kullanarak 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