Gönderen man find
:
-exec komutu;
Komutu çalıştır; 0 durumu döndürülürse true. Bulmak için aşağıdaki tüm bağımsız değişkenler, ';' ile karşılaşıldı. '{}' Dizesi, bazı find sürümlerinde olduğu gibi, yalnızca yalnız olduğu bağımsız değişkenlerde değil, komutun bağımsız değişkenlerinde gerçekleştiği her yerde işlenen geçerli dosya adıyla değiştirilir. Bu yapıların her ikisinin de kabuğundan genişlemesini önlemek için kaçması ('\' ile) veya alıntılanması gerekebilir. '-Exec' seçeneğinin kullanımına ilişkin örnekler için ÖRNEK sn bölümüne bakın. Belirtilen komut her eşleşen dosya için bir kez çalıştırılır.
Komut başlangıç dizininde yürütülür. -Exec seçeneğinin kullanımını çevreleyen kaçınılmaz güvenlik sorunları vardır;
-exec komutu {} +
-Exec seçeneğinin 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.
Yani, Anladığım kadarıyla, \;
bulduğu her dosya için ayrı bir komutu çalıştırır find
, oysa \+
dosyaları ekler ve hepsi tek bir komutu yürütür. \
O yüzden, bir kaçış karakteridir:
ls testdir1; ls testdir2
vs
ls testdir1 testdir2
Kabuğumda yukarıdakileri yapmak sorunuzun çıktısını yansıtıyordu.
ne zaman kullanmak istediğinize örnek \+
İki dosya varsayalım, 1.tmp
ve 2.tmp
:
1.tmp:
1
2
3
2.tmp:
0
2
3
İle \;
:
find *.tmp -exec diff {} \;
> diff: missing operand after `1.tmp'
> diff: Try `diff --help' for more information.
> diff: missing operand after `2.tmp'
> diff: Try `diff --help' for more information.
Halbuki \+
(sonuçlarını birleştirmek için find
) kullanıyorsanız:
find *.tmp -exec diff {} \+
1c1,3
< 1
---
> 0
> 2
> 30
Yani bu durumda diff 1.tmp; diff 2.tmp
vediff 1.tmp 2.tmp
\;
Uygun ve \+
gerekli olacak durumlar vardır . Kullanımı \+
ile rm
dosyaların performansı (hız) çok sayıda çıkarıyorsanız böyle bir örnek, daha üstün olacaktır \;
.