Skip to content

Instantly share code, notes, and snippets.

@dpaluy
Last active June 26, 2020 05:34
Show Gist options
  • Save dpaluy/3690668 to your computer and use it in GitHub Desktop.
Save dpaluy/3690668 to your computer and use it in GitHub Desktop.
Remove trailing whitespace of all files recursively
# Git repository-specific solution
# Source: http://unix.stackexchange.com/questions/36233/how-to-skip-file-in-sed-if-it-contains-regex/36240#36240
git grep -I --name-only -z -e '' | xargs -0 sed -i -e 's/[ \t]\+\(\r\?\)$/\1/'
find . -not \( -name .svn -prune -o -name .git -prune \) -type f -print0 | xargs -0 sed -i '' -E "s/[[:space:]]*$//"
# Generic solution which checks that the MIME type starts with 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)
@psaunders
Copy link

psaunders commented Apr 6, 2017

The first one will make a copy of all your files, and add an e to the end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment