SORU
9 NİSAN 2011, CUMARTESİ


Neden-exec mv bulmak için {} ./hedef/ değil mi ? (özellik listesi)

{} \; {} \ | xargs ... tam olarak ne olduğunu bilmek istiyorum. Açıklamalar bu açıklık lütfen.

Aşağıda 3 aynı sonuç çalıştırın ve çıkış komutları ama ilk komut biraz zaman alır ve biçimi de birbirinden farklıdır.

find . -type f -exec file {} \;
find . -type f -exec file {} \ 
find . -type f | xargs file

1. her dosya için file komut find komut gelen çalışır çünkü. Yani, temelde gibi çalışır:

file file1.txt
file file2.txt

Ama -exec ile bulmak, ikincisi 2 kez çalıştırın dosya komut aşağıdaki gibi: tüm dosyalar için komutları

file file1.txt file2.txt

Sonra ilk bir sorun olmadan çalışır aşağıdaki komutları çalıştırın ama ikinci bir hata mesajı verir.

find . -type f -iname '*.cpp' -exec mv {} ./test/ \;
find . -type f -iname '*.cpp' -exec mv {} ./test/ \  #gives error:find: missing argument to `-exec'

{} \ ile komut için bana hata mesajı veriyor

find: missing argument to `-exec'

bu yüzden mi? herkes ne olduğumu açıklamam lütfen yanlış yapıyorum?

CEVAP
9 NİSAN 2011, CUMARTESİ


manual page hemen hemen her şeyi açıklıyor.

-exec komut {} bul \;

, command {} Her bir sonuç için infaz edildi. {} tüm tekrarlarını dosya adı ile değiştirilir. ; yorumlanması kabuk önlemek için bir eğik çizgi ile öneki.

-exec komut {} bulacaksınız

Her sonuç command eklenen ve daha sonra yürütülür. Komut uzunluğu sınırlamaları dikkate alarak, bu komut bir kez daha, kılavuz sayfasına beni destekleyen idam olabilir sanırım

komut çağırmaları sayısı eşleşen dosya sayısı çok daha az olacaktır.

Manuel sayfasından bu alıntı dikkat edin

Komut satırı çok xargs komutu çizgileri oluşturur, aynı şekilde inşa edilmiştir

Herhangi bir KARAKTER BOŞLUK hariç {} arasında izin verilir. bağımsız xargs gibi bir komut eklenmesi gerektiğini bulmak için yapar.

Çözüm

Neyse ki, mv -t daha parametre --target ya da bir argüman olarak hedef dizini kabul edebilir. Bu kullanım olacak:

mv -t target file1 file2 ...

find emriniz olur:

find . -type f -iname '*.cpp' -exec mv -t ./test/ {} \ 

Bu kılavuz sayfası:

-exec komut ;

Komut Çalıştır; 0 eğer gerçek durum döndürdü. Aşağıdaki argümanlar bulmak alınması değişkenler için komut kadar bir argüman oluşan ;' is encountered. The string{}' yerine geçerli dosya kayıt altına alınıyor her yerde oluşur argümanlar komut, yalnızca bağımsız değişkenleri nerede yalnız olarak bazı sürümleri bulabilirsiniz. Bunların her ikisi de con‐ ( ` \ ' ) veya tırnak kabuk tarafından genişleme onları korumak için. kaçtı gerekir structions olabilir -Exec seçeneği kullanım örnekleri için ÖRNEKLER bölümüne bakın. Belirtilen komut eşleşen her dosya için bir kez çalıştırılır. Komut başlangıç dizini olarak yürütülür. Kaçınılmaz güvenlik sorunları-exec eylem, çevre vardır;- execdir seçeneğini kullanmalısınız.

-exec {} komutu

Bu değişken arkaplan eylem çalıştığı belirtilen komutu Seçili dosyaları, ama komut satırı tarafından inşa ekleme seçilen her dosya sonunda; toplam sayısı çağırmaları emri olacak çok az sayıda eşleşen dosyaları. Komut satırı çok xargs komutu çizgileri oluşturur, aynı şekilde inşa edilmiştir. Yalnızca bir örneği `{}' komutu içinde izin verilir. Komut başlangıç dizini olarak yürütülür.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dellbear816

    Dellbear816

    4 Mart 2008
  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011
  • Shaollin Animes

    Shaollin Ani

    19 HAZİRAN 2013