So entfernen Sie alle .svn-Verzeichnisse aus meinen Anwendungsverzeichnissen
Einer der Missionen von einem export-tool habe ich in meiner Anwendung ist die Reinigung von allen .svn
Verzeichnisse von meine-Anwendung-Verzeichnis-Baum. Ich bin auf der Suche für eine rekursive Befehl in der Linux shell, durchziehen den gesamten Baum und löschen Sie die .svn
- Dateien.
Ich bin nicht mit exportieren, wie dieses Skript benutzt werden, für einige andere Datei - /Verzeichnis-Namen, die nicht mit SVN. Ich habe versucht, so etwas wie:
find . -name .svn | rm -fr
Es hat nicht funktioniert...
Kommentar zu dem Problem - Öffnen
Dein Befehl sollte funktionieren, wenn Sie verwenden 'xargs rm -rf'
Vielleicht wollen Sie auch ändern Sie den löschen-Befehl "rm -rfi" nur um sicherzustellen, dass Sie positiv sind, den Sie löschen möchten Verzeichnisse.
Nicht verwenden, xargs, wenn.. wirst du Mühe haben mit Verzeichnissen, die Leerzeichen usw. Verwendung finden, wie unten beschrieben.
InformationsquelleAutor der Frage Itay Moav -Malimovka | 2009-08-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Bevor Sie einen Befehl ausführen möchten, dass ich oft und gerne laufen, diese zuerst:
InformationsquelleAutor der Antwort Greg
Was Sie schrieb, sendet eine Liste mit newline getrennt Dateinamen (und Pfade) auf
rm
, aber rm nicht wissen was zu tun ist, die Eingabe. Es ist nur erwartet command-line-Parameter.xargs
nimmt die Eingabe, in der Regel getrennt durch Zeilenumbrüche, und legt Sie auf die Kommandozeile, so das hinzufügen xargs macht, was Sie hatte Arbeit:xargs
ist intelligent genug, dass es nur so viele Argumente zurm
wie kann es akzeptieren. Also, wenn Sie hatte eine million Dateien kann es laufenrm
1,000,000/65,000 mal (wenn Ihre Schale übernehmen könnte, 65,002 Argumente auf der Kommandozeile {65k Dateien + 1 rm + 1 für -fr}).Als Personen, die geschickt darauf hingewiesen, auch die folgende Arbeit:
Den ersten beiden
-exec
Formen sowohl call -rm
für jeden Ordner gelöscht werden, so dass, wenn Sie hatte 1,000,000 Ordnerrm
wäre 1.000.000 mal aufgerufen. Dies ist sicherlich weniger als ideal. Neuere Implementierungen vonrm
erlauben Sie zum Abschluss den Befehl mit einem+
darauf hinweist, dassrm
akzeptieren wird, wie viele Argumente wie möglich:Den letzten find/xargs-version verwendet print0, die macht finden, die eine Ausgabe generieren, die verwendet
\0
als terminator sondern als ein Zeilenumbruch. Da POSIX-Systemen erlauben, irgendwelche Zeichen, aber\0
im Dateinamen, das ist wirklich der sicherste Weg, um sicherzustellen, dass die Argumente korrekt übergebenrm
oder die Anwendung ausgeführt wird.Darüber hinaus gibt es eine
-execdir
ausführenrm
aus dem Verzeichnis, in dem die Datei gefunden wurde, anstatt an der Basis-Verzeichnis und eine-depth
wird, die die Tiefe ersten.InformationsquelleAutor der Antwort Kaleb Pederson
Keine Notwendigkeit für Rohre, xargs, exec oder nichts:
Edit: Nur ein Scherz, offensichtlich
-delete
Anrufeunlinkat()
unter der Haube, so dass es verhält sich wieunlink
oderrmdir
und wird sich weigern, zu funktionieren auf Verzeichnisse, die Dateien enthalten.InformationsquelleAutor der Antwort A B
Wenn Sie nicht mögen, um zu sehen, eine Menge von
Warnungen, dann verwenden Sie die
-depth
Schalter:InformationsquelleAutor der Antwort lazy1
Gibt es schon viele Antworten, die sich für das löschen .svn-Verzeichnis. Aber ich möchte hinzufügen, dass Sie vermeiden können, diese Verzeichnisse von Anfang an, wenn Sie eine export-anstelle einer Kasse:
InformationsquelleAutor der Antwort Mnementh
Sie fast hatte. Wenn Sie möchten, übergeben Sie die Ausgabe eines Befehls als Parameter an ein anderes, müssen Sie mit xargs. Hinzufügen
-print0
stellt sicher, dass das Skript verarbeiten kann Pfade mit Leerzeichen:InformationsquelleAutor der Antwort soulmerge
In Windows, können Sie den folgenden registry-Skript hinzufügen "Delete SVN Folders", um Ihre rechten Maustaste Kontext-Menü. Führen Sie es auf einem beliebigen Verzeichnis, das diese lästigen Dateien.
InformationsquelleAutor der Antwort Nathan Taylor
InformationsquelleAutor der Antwort Itay Moav -Malimovka
Als ein wichtiges Thema, wenn Sie möchten, nutzen shell zu löschen .svn Ordner, die Sie brauchen, - Tiefe argument zu verhindern suchen-Befehl die Eingabe des Verzeichnisses, das wurde einfach gelöscht und zeigt Fehlermeldungen wie z.B.
Als ein Ergebnis, die Sie verwenden können, finden Sie den Befehl wie folgt:
InformationsquelleAutor der Antwort fatihk
Versuchen Sie dies:
Lesen Sie mehr über den Befehl suchen im developerWorks.
InformationsquelleAutor der Antwort scompt.com
Alternativ, wenn Sie möchten, exportieren Sie eine Kopie ohne änderung an der Arbeitskopie, die Sie verwenden können, rsync:
InformationsquelleAutor der Antwort pimlottc