Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

How do I recursively delete all .svn directories, starting with the directory I am in?

share|improve this question

migrated from stackoverflow.com Jun 1 '11 at 15:43

This question came from our site for professional and enthusiast programmers.

1  
What platform -- Windows? Linux/UNIX? Something else? –  Chris J Jun 1 '11 at 15:36
    
possible duplicate of Command to recursively remove all .svn directories on Windows –  Chris J Jun 1 '11 at 15:37
    
It's on Linux, Debian –  FinalForm Jun 1 '11 at 15:38
    
Funny enough, I needed this in the morning when committing something to a mercurial repository. I ended up adding everything and removing the .svn folders before committing instead. And now you come up with this question, apparently Ned's solution is what I needed... –  Tom Wijsman Jun 1 '11 at 18:49
add comment

3 Answers 3

Keep in mind that svn provides the "export" command that provides you with a copy of your working tree, but without all the .svn directories sprinkled in. This could be what you want.

$ svn export /tmp/copy_of_my_tree
share|improve this answer
    
this won't work for a repo, you have no access to (e.g. zipped and mailed to you) –  mbx Aug 8 '11 at 15:24
add comment

In any modern UN*X-like system (Linux, Mac OS X, FreeBSD):

find . -type d -name '.svn' -exec rm -rf {} \;

find:

  • in the current directory
  • directories
  • with name .svn
  • and when found, run rm -rf on each
share|improve this answer
4  
That's almost the canonical idiom. You forgot xargs to reduce the number of rm processes needed: find . -type d -name '.svn' -print0 | xargs -0 rm -rf -- –  JdeBP Jun 1 '11 at 21:12
    
To add to @JdeBP's comment: Some find implementations also support -exec rm -rf {} + or even -delete to achieve the same thing. –  grawity Jun 2 '11 at 11:06
add comment

If you're working in Linux (or equivalent), you can just do the following:

find . -name .svn -exec rm -rf {} \;
share|improve this answer
1  
Or, better, and as Piskvor mentions, use -type d to ensure that one isn't accidentally deleting something that isn't a directory. –  JdeBP Jun 1 '11 at 21:10
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.