查找并替换字符串但替换可执行文件和二进制文件中的字符串

时间:2015-02-26 11:27:53

标签: bash

我正在编写一个bash脚本,它找到所有ascii文本字符并仅在ascii文本文件中替换字符串,它不应该替换所有二进制文件和可执行文件中的字符串。

我试过这个:

 find .  -type f \! -executable \! \( -name "*.o" -name "*.class"  \) -print -exec sed -i 's/\<hello\>/Hello/g' '{}' \;

我想可能会有越来越多的二进制文件,使用-name编写它们可能不正确......

如果有人可以帮助我,它不应该是我写的单行脚本。

1 个答案:

答案 0 :(得分:0)

您可以使用file命令检查类型:

#!/bin/bash

while read filename; do
    file "$filename" | grep -q "ASCII text" || continue
    echo "Updating $filename"
    sed -i 's/\<hello\>/Hello/g' "$filename"
done < <(find . -type f \! -executable)