I wrote a little script which prints the names of files containing problematic character sequences.
#!/bin/bash
# Finds all files in the repository that contain
# undesired characters or sequences of characters
pushd .. >/dev/null
# Find Windows newlines
find . -type f | grep -v ".git/" | grep -v ".gitmodules" | grep -v "^./lib" | xargs grep -l $'\r'
# Find tabs (should be spaces)
find . -type f | grep -v ".git/" | grep -v ".gitmodules" | grep -v "^./lib" | xargs grep -l $'\t'
# Find trailing spaces
find . -type f | grep -v ".git/" | grep -v ".gitmodules" | grep -v "^./lib" | xargs grep -l " $"
popd >/dev/null
I’d line to combine this into one line, i.e. by having grep look for \r OR \t or trailing spaces. How would I construct a regex to do this? It seems that for escape characters a special sequence needs to be used ($'\X') and I’m not sure how to combine these…
I’m running OS X, and am looking for a solution that works on both BSD and GNU based systems.
Not certain that ‘$\r|$\t| $’ will work quoted that way, with a simple test on my system it seemed to work.
I’m using the -E (extended reg-exp) to grep, that allows ‘OR’ing together multiple search targets.
Older Unix-en may or maynot support the -E option, so if you get an error message flagging that, replace all
grep -Ewithegrep.I hope this helps.