Ben anlamını bilmek istiyorum {} +içinde execkomuta ve arasındaki fark nedir {} +ve {} \;. Kesin olmak gerekirse, bu ikisi arasındaki fark nedir:
find . -type f -exec chmod 775 {} +
find . -type f -exec chmod 775 {} \;
Ben anlamını bilmek istiyorum {} +içinde execkomuta ve arasındaki fark nedir {} +ve {} \;. Kesin olmak gerekirse, bu ikisi arasındaki fark nedir:
find . -type f -exec chmod 775 {} +
find . -type f -exec chmod 775 {} \;
Yanıtlar:
Kullanımı ;(noktalı) ya da +(artı işareti) tarafından çağrılan kabuk komutları sona erdirmek için zorunludur -exec/ ' execdir.
;(Noktalı virgül) veya +(artı işareti) arasındaki fark , bağımsız değişkenlerin find -exec/ -execdirparametresine nasıl aktarıldıklarıdır . Örneğin:
kullanarak ;birden fazla komut yürütür (her bağımsız değişken için ayrı ayrı),
Misal:
$ find /etc/rc* -exec echo Arg: {} ';'
Arg: /etc/rc.common
Arg: /etc/rc.common~previous
Arg: /etc/rc.local
Arg: /etc/rc.netboot
Aşağıdaki tüm argümanlar
findkomuta argümanlar olarak alınır.Dize
{}, işlenmekte olan geçerli dosya adıyla değiştirilir.
using +, mümkün olan en düşük komutları yürütür (argümanlar bir araya getirildiği için). xargsKomutun nasıl çalıştığına çok benzer , bu nedenle satır başına maksimum argüman sınırını aşmamak için komut başına mümkün olduğunca fazla argüman kullanır.
Misal:
$ find /etc/rc* -exec echo Arg: {} '+'
Arg: /etc/rc.common /etc/rc.common~previous /etc/rc.local /etc/rc.netboot
Komut satırı, seçilen her dosya adı sonuna eklenerek oluşturulur.
{}Komut içinde yalnızca bir örneğine izin verilir.
Ayrıca bakınız:
Find komutunun üç dosyanın altına düştüğü göz önüne alındığında:
fileA
fileB
fileC
Eğer kullanırsanız -execbir artı (ile +) işareti,
find . -type f -exec chmod 775 {} +
Olacak:
chmod 775 fileA fileB fileC
Komut satırı, eşleşen her dosya adının sonuna eklenerek xargsoluşturulur; bu , komut satırlarını oluşturan şekilde olur . Komutun toplam çağrı sayısı ( chmodbu durumda), eşleşen dosya sayısından çok daha az olacaktır.
Eğer kullanırsanız -execnoktalı virgülle ( ;),
find . -type f -exec chmod 775 {} \;
Olacak:
chmod 775 fileA
chmod 775 fileB
chmod 775 fileC
Başı man find:
-exec komutu {} + -exec eyleminin bu değişkeni, seçilen dosyalarda belirtilen komutu çalıştırır, ancak komut satırı, seçilen her dosya adı sonuna eklenerek oluşturulur; komutun toplam çağrı sayısı, eşleşen dosya sayısından çok daha az olacaktır. Komut satırı, xargs'ın komut satırlarını oluşturduğu gibi oluşturulur. Komutta yalnızca bir {{} örneğine izin verilir. Komut başlangıç dizininde yürütülür.
man find(1)Herkes tarafından kolayca bulunabilmesi için çok ayrıntılı olarak açıklanmıştır . Tembel olma.