This is pretty easy to do with a little shell-scripting-foo.
svn status | grep "^\!" | awk '{print $2}' | xargs svn del
Here's a breakdown, as requested:
- The output of
svn status
is piped to grep
grep
pipes every line that starts with a !
(The ^
in a regex means beginning of line, and the '\' is necessary to escape the special meaning of !
)
awk
then takes the second "argument" (so to speak.. this is the path of the file) from grep
and pipes only it to...
xargs
which is simply a utility for building an executing shell commands from standard input, which generates and runs the command svn del your/file/here
You can also use variations on this line to do all sorts of handy things with svn
, like recursively adding files to the repo:
svn status | grep "^\?" | awk '{print $2}' | xargs svn add
Also, I just remembered, and wanted to point out that this will not work if you have spaces in your path or filenames. I always forget about that, because I never, ever do. If you have spaces in your paths/filenames, use the following variation on the first example:
svn status | grep "^\!" | sed -e 's/? *//' | sed -e 's/ /\\ /g' | xargs svn del
(There's probably a more graceful way to do that, so feel free to chime in). In this one, the first sed
takes the first whitespace character, and any (if any) spaces that follow it, and removes them (basically a trim). Then the second call to sed
replaces any remaining spaces with \
, which is an escaped space, as far as the shell is concerned. Come to think of it, you could probably just wrap it with quotes...