2017-05-24 4 views
1

MitWie man einen bestimmten Ordner in bestimmten Ordnern

find . -name "*_develop-*" 

Ich bin in der Lage löschen Sie alle Ordner im aktuellen Verzeichnis zu finden, die _develop- im Ordnernamen enthält, z.B.

Jetzt in diesen gefundenen Ordnern möchte ich den Ordner "Temp" löschen.
Wie übertrage ich den erforderlichen Befehl, um in den resultierenden Ordnern zu suchen, den erforderlichen Ordner zu finden und ihn dann zu löschen?

+0

Sie können immer mit grep filtern und Ergebnis übergeben mit XARGS zu RM-RF-Befehl. – darvark

Antwort

1

Sie können die Option -exec verwenden, um einen rm -rf Befehl für den Übereinstimmungsordner zu erstellen.

Befehl so sein sollte:

find . -name "*_develop-" -exec rm -rf {}/tmp/ \; 

{} ein Spiel Ordner darstellen, so {}/tmp/ repräsentieren tmp-Ordner in einem Spiel Ordner

+0

Temp ist ein Ordner im Entwicklungsordner, nicht Teil des Ordnernamens. –

+0

Sorry, ich habe das nicht gut verstanden. Ich bearbeite meine Antwort –

1

Sie -regex Flagge

find . -regex '.*_develop-.*/temp' -type d -delete 

nutzen könnten oder wenn es sich um den Ordner direkt unter

handelt
0

Verwendung mit xargs findet

find . -wholename "*_develop-*/temp" -print0 | xargs -0 rm -rf 

Mit print0 und xargs -0 Räume durch ein NULL Zeichen ersetzen. Es ist nützlich, wenn in einigen Verzeichnisnamen Leerzeichen vorhanden sind, sodass XARGs ohne sie fehlschlagen.

Sie könnten Suche . -wholename "*_develop-*/temp" -delete verwenden, aber das wird fehlschlagen, wenn temp Verzeichnis nicht leer ist.

Verwandte Themen