将“iconv”应用于所有子目录中的所有 PHP 文件

将“iconv”应用于所有子目录中的所有 PHP 文件

我正在尝试更改许多子目录中的文件。

以下仅处理当前目录:

for file in *.php; do 
    iconv -f cp949 -t utf8 -o "$file.new" "$file" && mv -f "$file.new" "$file"
done

我如何将其应用于所有子目录中的所有 PHP 文件?

答案1

假设当前目录中有许多子目录并且它们包含以下.php文件:

for file in */*.php; do 
    iconv -f cp949 -t utf8 -o "$file.new" "$file" && mv -f "$file.new" "$file"
done

假设您有一个很深的目录层次结构,并且您希望.php在其中的任何位置找到所有文件:

find . -type f -name '*.php' \
    -exec sh -c 'file="$0"; iconv -f cp949 -t utf8 -o "$file.new" "$file" && mv -f "$file.new" "$file"' {} ';'

上述建议未经测试。

相关内容