Deux approches alternatives qui fonctionnent également avec les DOS des retours à la ligne (CR/LF) et de faire un assez bon travail en évitant les fichiers binaires:
Solution générique qui vérifie que le type MIME commence par text/
:
while IFS= read -r -d '' -u 9
do
if [[ "$(file -bs --mime-type -- "$REPLY")" = text/* ]]
then
sed -i -e 's/[ \t]\+\(\r\?\)$/\1/' -- "$REPLY"
else
echo "Skipping $REPLY" >&2
fi
done 9< <(find . -type f -print0)
Dépôt Git spécifique de la solution par Mat qui utilise l' -I
option de git grep
pour ignorer les fichiers qui Git estime être binaire:
git grep -I --name-only -z -e '' | xargs -0 sed -i -e 's/[ \t]\+\(\r\?\)$/\1/'