Dies ist ziemlich einfach mit ein wenig Shell-Scripting-Foo zu tun.
svn status | grep "^\!" | awk '{print $2}' | xargs svn del
Hier ist eine Panne, wie gewünscht:
- Der Ausgang des
svn status
zu grep
grep
Rohre geleitet wird jede Zeile, die in einem regulären Ausdruck mit einem !
(The ^
beginnt bedeutet Zeilenanfang , und das '\' ist notwendig, um die spezielle Bedeutung von zu umgehen
awk
dann nimmt das zweite "Argument" (so zu sprechen .. dies der Pfad der Datei ist) von grep
und Rohren nur zu ...
xargs
, die für den Aufbau einer Ausführung von Shell-Befehle von der Standardeingabe einfach ist ein Dienstprogramm, das den Befehl und führt erzeugt svn del your/file/here
können Sie auch Varianten verwenden, um auf dieser Linie mit svn
alle Arten von praktischen Dinge zu tun, wie rekursiv Dateien in den Repo-Zugabe:
svn status | grep "^\?" | awk '{print $2}' | xargs svn add
auch ich gerade daran erinnert, und wollte, dass dies darauf hin, funktioniert nicht, wenn Sie Leerzeichen in Ihrem Pat haben h oder Dateinamen. Das vergesse ich immer, weil ich es nie tue. Wenn Sie Leerzeichen in Pfaden/Dateinamen haben, verwenden Sie die folgende Variante des ersten Beispiel:
svn status | grep "^\!" | sed -e 's/? *//' | sed -e 's/ /\\ /g' | xargs svn del
(Es ist wahrscheinlich eine anmutige Weise zu tun, so fühlen sich frei zu läuten). In diesem Fall nimmt der erste sed
das erste Leerzeichen und alle darauf folgenden Leerzeichen (falls vorhanden) auf und entfernt sie (im Grunde eine Trimmung). Dann ersetzt der zweite Aufruf an sed
alle verbleibenden Räume mit \
, die ein escape-Raum ist, soweit es die Shell betrifft. Denken Sie daran, Sie könnten es wahrscheinlich nur mit Anführungszeichen umhüllen ...
Windows? Linux? – RedFilter
Ah, Entschuldigung. Es ist OSX, aber die Antwort unten funktioniert. –
Anwendungen sollten Menschen nicht erlauben, ihre Fehler mit 10000 zu multiplizieren: P Oh, die Schrecken, die ich hatte, wenn ich dachte, ein schnelles "alles ersetzen" würde meine refactoring Probleme lösen :) – cwap