Her şeyden önce, kabuk komut dosyalarında normal ve ascii tırnak ( "ve 'ascii kodları 0x22ve 0x27sırasıyla) kullandığınızdan emin olun , çünkü yazınızdaki örnek standart olmayan alıntı karakterleri içerir. Eğer yakından bakarsanız, biraz farklı görünüyorlar. Muhtemelen bu, Word, OOWriter, hatta bir tarayıcı penceresi gibi zengin bir metin belgesi biçiminden kopyala-yapıştır hatasıdır.
Bir Mac'te olduğunuzdan, muhtemelen FreeBSD uygulamasına sahipsiniz, sedbu durumda komutu şu şekilde yazmak zorundasınız:
find . -name "*.java" -exec sed -i '' s/foo/bar/g {} +
(burada dosya başına bir çağrı çalıştırmamak için kullanmak +yerine ).\;sed
FreeBSD uygulamasında bir yedek dosyasının uzantısını: bayrak bir argüman gerekiyor. Örneğin , orijinal dosyadaki değiştirme işlemini gerçekleştirmeden önce komutla ilk olarak yedeklenir . Boş bir argüman kullanmak, istediğiniz gibi görünen bir yedekleme dosyasını kullanmamak anlamına gelir.sed-i-i .bakfile1.txtfile1.txt.bak''
GNU (veya NetBSD, OpenBSD, busybox) uygulamasındaki aynı şey:
find . -name "*.java" -exec sed -i s/foo/bar/g {} +
Yorumlarınızla cevabımı geliştirdiğim için @bahamat ve @Mikel ve @ pieter-breed teşekkür ederiz .
-execondan sonraki her şeyi kaldırırsan ? Java dosyalarının adlarını yazdırıyor mu? (ASCII tırnak işaretleri yerine akıllı tırnak kullandığınız için endişeleniyorum.)