diff --git a/lib/tasks/whitespace.rake b/lib/tasks/whitespace.rake
index c5b9d4c6ea646b43052e51601a1b7d464eee518f..657054aa943fcddfcb8031dbd8bcb61da07e5339 100644
--- a/lib/tasks/whitespace.rake
+++ b/lib/tasks/whitespace.rake
@@ -1,15 +1,18 @@
 namespace :whitespace do
   desc 'Removes trailing whitespace'
   task :cleanup do
-    sh %{find . -name '*.rb' -exec sed -i '' 's/ *$//g' {} \\;}
+    sh %{for f in `find . -type f | grep -v -e '.git/' -e 'public/' -e '.png'`;
+          do cat $f | sed 's/[ \t]*$//' > tmp; cp tmp $f; rm tmp; echo -n .;
+        done}
   end
   desc 'Converts hard-tabs into two-space soft-tabs'
   task :retab do
-    sh %{find . -name '*.rb' -exec sed -i '' 's/\t/  /g' {} \\;}
+    sh %{for f in `find . -type f | grep -v -e '.git/' -e 'public/' -e '.png'`;
+          do cat $f | sed 's/\t/  /g' > tmp; cp tmp $f; rm tmp; echo -n .;
+        done}
   end
   desc 'Remove consecutive blank lines'
   task :scrub_gratuitous_newlines do
     sh %{find . -name '*.rb' -exec sed -i '' '/./,/^$/!d' {} \\;}
   end
 end
-