Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Software
>
Suche Terminal Befehl um Dateien zu suchen und zu löschen
Suche Terminal Befehl um Dateien zu suchen und zu löschen
hausfreund
17.09.11
23:57
Ich möchte alle .svn Ordner aus einigen Ordnern entfernen. Kann mir jemand einen Terminal Befahl dafür sagen? Die Ordner sollten z.B. im Dokuments Ordner gesucht und gelöscht werden.
Hilfreich?
0
Kommentare
ts
18.09.11
00:13
Nun, erst mal nachdenken und "man find" sowie "man rm" nachschauen.
"find ./ -name ".svn" -exec ls -al {} \;" ausprobieren, mit "rm -rf" statt "ls -al" kannst Du Ordner löschen. Die Angabe "./" am Anfang bezieht sich darauf nur den momentanen Ordner zu durchsuchen.
Ich empfehle meinem Vorschlag
nicht
zu trauen (es geht schließlich um das Löschen von Ordnern und Dateien) und unabhängig davon
nachdenken
sowie
vorher eine Datensicherung durchzuführen
.
Hilfreich?
0
ts
18.09.11
00:25
Nachtrag: svn export wäre eventuell für dich auch eine Möglichkeit (sicherer).
Hilfreich?
0
hausfreund
18.09.11
00:26
Ich habe es mit folgendem Befehl geschafft:
find . -name .svn -print0 | xargs -0 rm -rf
hat sehr gut geklappt. Ich habe aber in einem Ordner gesucht:
find /Users/*Accountname ohne Anführungsstriche einsetzen"/Documents -name .svn -print0 | xargs -0 rm -rf
Hilfreich?
0
hausfreund
18.09.11
00:26
Dein Beitrag hat mir sehr geholfen - herzlichen Dank, das waren 3GB
Hilfreich?
0
_mäuschen
18.09.11
12:03
Very strange
$ find . -name .sh -maxdepth 1
no results
$
$ find . -name *.sh -maxdepth 1
find: fixlogin.sh:
unknown option
$
$ find . -name "*.sh" -maxdepth 1
finally
./cleanfix.sh
./fixlogin.sh
./loginfix.sh
./zetest.sh
$
Hilfreich?
0
Simoon
18.09.11
13:14
Die zsh(1) erspart in solchen Fällen übrigens oft Tipparbeit: rm -rf **/.svn
Hilfreich?
0
ts
18.09.11
13:15
_mäuschen
$ find . -name .sh -maxdepth 1
no results
Fehler in OSI Layer 8?
$ find ./ -name "*.nib" -exec ls {} \;
classes.nib info.nib keyedobjects.nib
...
$ find ./ -name classes.nib -exec ls {} \;
.//Applications/7zX.app/Contents/Resources/CocoaDialog.app/Contents/Resources/Inputbox.nib/classes.nib
...
Hilfreich?
0
Simoon
18.09.11
13:24
_mäuschen
Very strange
$ find . -name .sh -maxdepth 1
no results
$
$ find . -name *.sh -maxdepth 1
find: fixlogin.sh:
unknown option
$
$ find . -name "*.sh" -maxdepth 1
finally
./cleanfix.sh
./fixlogin.sh
./loginfix.sh
./zetest.sh
$
Vielleicht noch zur Aufklärung, falls sich jemand darüber wundern sollte:
Fall 1) Es existiert dort keine Datei, die exakt ".sh" heißt, sondern nur welche, die so enden (ist ja nicht das gleiche)
keine Treffer
Fall 2) Die Shell expandiert das Wildcard-Symbol selbst, der eigentliche find(1)-Aufruf sieht also etwa so aus: "find . -name cleanfix.sh fixlogin.sh loginfix.sh zetest.sh -maxdepth 1"
cleanfix.sh wäre an dieser Stelle noch ein gültiges Argument für das "-name", aber mit dem "fixlogin.sh" kann find(1) an dieser Position nix anfangen.
Fall 3) find(1) bekommt "*.sh" als Argument zu "-name" und weiß was es mit dem Wildcard-Symbol anfangen soll.
Hilfreich?
0
someone
18.09.11
14:25
Simoon hat recht.
Eine weitere Moeglichkeit waere:
find . -name \*.sh -maxdepth 1
Der shell escape "\" vor dem Wildcard verhindert dass die shell versucht den Wildcard zu expanden.
Uebrigens, falls sowieso keine Expansion moeglich ist da im Verzeichnis wo der find command ausgefuehrt wird gar kein File welches matcht (d.h. auf .sh endet) liegt, dann funktioniert der find auch ohne jegliches Quoting oder Escapes...
Hilfreich?
0
_mäuschen
18.09.11
15:06
Ja. Danke für eure "Nachhilfe".
Ist ja auch richtig so.
Ich habe nur angezeigt, dass
hausfreund
Ich habe es mit folgendem Befehl geschafft:
find . -name
.svn
-print0 | xargs -0 rm -rf
schlichtweg einfach nicht funktionieren kann.
Deshalb auch mein Very strange
Und gut is'
Hilfreich?
0
Simoon
18.09.11
19:33
_mäuschen
Ja. Danke für eure "Nachhilfe".
Ist ja auch richtig so.
Ich habe nur angezeigt, dass
hausfreund
Ich habe es mit folgendem Befehl geschafft:
find . -name
.svn
-print0 | xargs -0 rm -rf
schlichtweg einfach nicht funktionieren kann.
Deshalb auch mein Very strange
Und gut is'
Ich glaube, hier liegt ein Missverständnis vor: @@hausfreund ging es in der Tat um Verzeichnisse, die exakt ".svn" heißen, das sollte keine Dateiendung darstellen. Insofern ist der Befehl also korrekt. Subversion legt in solchen Verzeichnissen Metadaten an, auf die @@hausfreund offenbar verzichten kann.
Hilfreich?
0
_mäuschen
18.09.11
20:05
Ach so. Das sind
hidden directories
.
Ja dann…
-type d -name .svn
so wird's jedem klar
Hilfreich?
0
ts
18.09.11
20:52
_mäuschen
so wird's jedem klar
Bei dem Kasperletheater, das man auf MTN sehr oft sieht kann gar nicht allen klar sein, um was es geht, außerdem habe ich schon am Anfang explizit ".svn" geschrieben.
Hilfreich?
0
someone
18.09.11
21:30
Wenn man jetzt noch pedantisch sein will
dann brauchts beim command
find ./ -name ".svn" -exec ls -al {} \;
aus dem allerersten Post das "-a" flag beim ls command nicht, da die hidden dirs ja explizit als Argument an "ls" uebergeben werden.
Den trailing Slash beim directory Namen kann man sich ebenfalls schenken, macht nur bei ganz notorischen commands einen Unterschied.
Zudem hat der find command schon einen eigenen "-ls" switch.
Mein Vorschlag fuer das rekursive Loeschen der .svn Verzeichnisse waere als (ohne Verwendung von "xargs"!):
Erst mal schauen was matcht:
find . -type d -name .svn -ls
dann loeschen:
find . -type d -name .svn -exec rm -rf {} \;
Hilfreich?
0
_mäuschen
18.09.11
21:55
find . -type d -name .svn -exec rm -rf {} \;
So. Jetzt ist's *nix mässig richtig
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.