Bir dosyayı mevcut dizine çıkartın


1

.zipÖznitelikle alt dizinleri ararken, dizine giden yolu da açmanız gerektiğini anladım . Peki yolu nasıl saklıyorsun? Bu neredeyse orada, ancak içinde bir boşluk olduğunda düzgün çalışmıyor {zip_file}.

zip_dir=$PWD/$(basename "${zip_file}")

Son zamanlarda pek çok soruyu yanıtladığını görüyorum - Sonrasında genel amaç nedir? :) Size daha kolay bir yöntem gösterebiliriz.
Tim

Daha önce gösterdiğim gibi, ters eğik çizgiler için özür dilerim. Bunları yankı satırlarında kullanıyorum, bu yüzden üzgünüm. Bu çizgi iyi çalışıyor. Tim ile aynı fikirdeyim, buradaki amaç nedir? zip_dirDeğişkenin yanında ne yapmaya çalıştığınızla ilgili bir sorun olabilir .
Terrance

Anladığım kadarıyla, sorunu parçalara bölüyorum. Bu script ( dbforums.com/… ) istediklerime yakın ancak nasıl çalıştığını bilmeyen bir "sihirli" betiği kopyalamak istemiyorum. Bu betiğin sorunu şu ki ... myfile.zip adında bir klasör istemiyorum ve tekrar tekrar alt klasörleri aramak istiyorum.
JohnnyBizzle

@JohnnyBizzle peki, unix.stackexchange.com/questions/4367/… , yardımcı olabilir, stackoverflow.com/questions/107995/… . Ayrıca, cevapladığınız zaman size @Namebildirilmeleri için uyarılmaya çalışın !
Tim

1
@JohnnyBizzle bu yüzden isminizi kaldırmak için zip_dir=$PWD/$(basename "${zip_file}")tekrar tanımlayan başka bir satır ekleyin . İstediğiniz sonuncusu olduğu sürece, aynı değişkene sahip şeyleri tanımlayan birden çok satırın olması tamamdır. zip_dir=${zip_dir%.*}.zip
Terrance

Yanıtlar:


2

Bunu diğer sorunuzdan da yarattım. Bana biraz zaman aldı ama bu, zip dosyası adına göre klasörler oluşturmak, klasör adını çıkarmak .zip, ardından zip dosyasını bu klasöre çıkartmak için bulabildiğim şeydi .

#! / Bin / bash

echo "Klasör oluştur başlat ..."
Bul türü f-adı "* .zip" | dosya adını okurken
yap
 DosyaAdı1 = $ {dosya adı: 2}
 klasöradı = $ PWD / "$ {DosyaAdı1%. *}"
 mkdir -p "$ foldername"
 "$ dosyaadı" -d "$ foldername" dosyasını çıkartın
 echo "$ foldername dizini oluşturuldu ve dosyalara çıkartıldı." 
tamam

Hat filename1=${filename:2}kapalı şeritler ./ismin.


Neredeyse mükemmel çalışıyordu ama bir klasörün bir alanı vardı, bu yüzden açarken bunu görmezden geldi
JohnnyBizzle

Benim hatam - Alıntıları unuttum!
JohnnyBizzle

@JohnnyBizzle Ayrıca daha derin klasörler için bazı basit düzeltmeler yaptım, ancak yine de çalışması gerekiyor.
Terrance

0

Düzenleme: Bunu doğru test etmemeliydim.

Genelde, değişken ataması yaparken, sadece bir değişkeni kaldırırken alıntı yapmanız gerekmez. Bir ödev yaparken, başvurusu kaldırılmış bir değişkenin etrafına tırnak işareti koymanız gerekmez, ancak başvuru yeniden düzenleme işlemi bir alt kabukta gerçekleştiğinden, ${zip_file}değerin temel adı için doğru bir şekilde iletilmesi için parçanın çevresine tırnak işaretleri gerekir . Tırnaklar aslında tüm satır boyunca gerekli DEĞİLDİR , çünkü daha sonra değişken atama bağlamında geri dönüyor, çünkü bash değeri alt kabuktan atama satırına geçerken doğru olanı yapacak.

Bu işaret için @ janos teşekkürler. Beni aşırı alıntılar yoluna sokan orijinal çizgiyi test ederken neye batırdığımı bilmiyorum. Haklısın, aşağıdakiler iyi:

zip_dir=$PWD/$(basename "${zip_file}")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.