Kombinasyonunu kullanın find(1)
ve sed(1)
:
# Find all files under the directory hierarchy rooted at 'root', and replace
# all instances of the regular expression 'pattern' with 'replacement' in all
# of those files:
find root -type f -exec sed -i~ 's/pattern/replacement/g' '{}' '+'
Komut satırı uzunluğu sınırlamalarıyla karşılaşırsanız, '+'
sonunu ile değiştirin ';'
. Bu, yavaş çalışmasına neden olacaktır (çünkü her dosya için yeni bir işlem yapmak zorundaydı), ancak bunun için çok uzun bir komut satırı tehlikesi olmayacak sed
.
Ayrıca, yalnızca belirli filtrelere uygun filtreler ekleyerek de değiştirebilirsiniz find
(örneğin -name *.txt
, yalnızca .txt dosyalarını değiştirmek için).