Her şeyden önce, kabuk komut dosyalarında normal ve ascii tırnak ( "
ve '
ascii kodları 0x22
ve 0x27
sı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, sed
bu 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 .bak
file1.txt
file1.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 .
-exec
ondan 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.)