我有大量包含非ASCII字符的文件,它们遍布整个文件系统。所以我一直在寻找一个批处理解决方案,但我遇到了一个问题:从多个文件中删除非ASCII字符递归
find . -name "*.yml" -print0 | while read -d $'\0' file; do tr -cd '\11\12\15\40-\176' < "$file" > "$file"; done
这个命令应该正常工作,不会有是TR如果使用相同的输入-CD不工作问题,输出名称。你知道任何替代方案或我如何解决这个小问题?
得到它(不知道如果这看起来不错或糟糕):根据文件名
find . -name "*.yml" -print0 | while read -d $'\0' file; do cp "$file" "${file}.temp" && tr -cd '\11\12\15\40-\176' < "${file}.temp" > "$file" && rm "${file}.temp"; done
...使用临时文件(或变量)? –
mhh,我该怎么做,并仍然可以使用一个命令行命令或它需要一个批处理文件? – user2693017