Aşağıdaki komutu çalıştırmaya çalışıyorum:
find a/folder b/folder -name *.c -o -name *.h -exec grep -I foobar '{}' +
Bu bir hata döndürüyor:
find: missing argument to -exec
Man sayfasıyla eşleştiği gibi, bu komutta neyin yanlış olduğunu göremiyorum:
-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.
Ayrıca denedim:
find a/folder b/folder -name *.c -o -name *.h -exec grep -I foobar {} +
find a/folder b/folder -name *.c -o -name *.h -exec 'grep -I foobar' {} +
find a/folder b/folder -name *.c -o -name *.h -exec 'grep -I foobar' '{}' +
find a/folder b/folder -name "*.c" -o -name "*.h" -exec grep -I foobar '{}' +
find a/folder b/folder \( -name *.c -o -name *.h \) -exec grep -I foobar '{}' +
find a/folder b/folder -name *.c -o -name *.h -exec grep -I foobar '{}' \+
find. -exec cmd {} +Varyant POSIX olmasına ve 80'lerden beri mevcut olmasına rağmen , GNU bulguyu sadece (nispeten) yakın zamanda ekledi (2005). find --versionSize ne anlatıyor?
-exec {} +Daha eski GNU bulgularında, -print0 | xargs -r0benzer bir şey elde etmek için (POSIX dışı) kullanabilirsiniz. 4.11994 dan
-namedesen argümanlar alıntı edilmelidir: -name "*.c" -o -name "*.h". -execHatayla ilgisi olmasa da bu doğrudur . Diğer tüm cevapların joker karakterleri tırnak içine aldığını fark edeceksiniz, ancak sadece Gilles bundan bahsediyor. ... (devamı)
-name "*.[ch]"açıklama yapmadan daraltır . Bu, komut satırını basitleştirmenin ve özellikle -o. İçeren ifadeleri -odoğru bulmak zordur. Seninki yanlış; Komutunuz hata vermeyecek şekilde sabitlenmişse (Gilles'in cevabında olduğu gibi), grepyalnızca .hdosyalarda çalışır. Yapmanız gerek '(' -name '*.c' -o -name '*.h' ')'.
+Sonunda kaçmayı denedin mi?find a/folder b/folder -name *.c -o -name *.h -exec grep -I foobar '{}' \+