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

hausfreund17.09.1123: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.
0

Kommentare

ts
ts18.09.1100: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.
0
ts
ts18.09.1100:25
Nachtrag: svn export wäre eventuell für dich auch eine Möglichkeit (sicherer).
0
hausfreund18.09.1100: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
0
hausfreund18.09.1100:26
Dein Beitrag hat mir sehr geholfen - herzlichen Dank, das waren 3GB
0
_mäuschen
_mäuschen18.09.1112: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
$

0
Simoon
Simoon18.09.1113:14
Die zsh(1) erspart in solchen Fällen übrigens oft Tipparbeit: rm -rf **/.svn
0
ts
ts18.09.1113: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
...
0
Simoon
Simoon18.09.1113: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.
0
someone18.09.1114: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...





0
_mäuschen
_mäuschen18.09.1115: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'
0
Simoon
Simoon18.09.1119: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.
0
_mäuschen
_mäuschen18.09.1120:05

Ach so. Das sind hidden directories.


Ja dann…

-type d -name .svn

so wird's jedem klar

0
ts
ts18.09.1120: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.
0
someone18.09.1121: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 {} \;

0
_mäuschen
_mäuschen18.09.1121:55

find . -type d -name .svn -exec rm -rf {} \;
So. Jetzt ist's *nix mässig richtig

0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.