GNU find löscht Dateien innerhalb eines Verzeichnisses, behält jedoch das Verzeichnis selbst bei

317
ipatch

Ich habe den größten Teil eines Nachmittags damit verbracht, diesen herauszufinden. Ich habe ein Verzeichnis, das mehrere Projektverzeichnisse enthält, und in jedem Projektverzeichnis gibt es ein node_modulesVerzeichnis. Ich möchte alle Dateien löschen versteckt im eingebundenen node_modulesVerzeichnis, aber halten das node_modulesVerzeichnis, das heißt. habe ein Empy- node_modulesVerzeichnis.

Ich habe ein paar Quasi-Lösungen gebaut, aber das node_modulesVerzeichnis bleibt erhalten . Ich verwende GNU findund grepauf macOS 10.12.x via Homebrew mit Fish Shell.

1
Möchten Sie "nur" die "versteckten" Dateien löschen (in Unix beginnt eine Datei, deren Name mit "." Beginnt, ist _hidden_) mit "node_modules" oder möchten Sie _all_-Dateien innerhalb von "node_modules" löschen? John1024 vor 6 Jahren 0
@ John1024 ** alle ** Dateien innerhalb von "node_modules" ipatch vor 6 Jahren 1

1 Antwort auf die Frage

2
John1024

So löschen Sie alle Dateien in einem Verzeichnis, das sich unter dem aktuellen Verzeichnis befindet und node_modulesunter Beibehaltung des Namens benannt wird node_modules:

find . -path '*/node_modules/*' -delete 

(Dies wurde mit GNU getestet, findaber ich erwarte, dass sich BSD / OSX findähnlich verhält.)

Beispiel

Lassen Sie uns ein node_modulesVerzeichnis mit einigen Dateien erstellen :

$ mkdir -p node_modules/dir $ touch node_modules/file 

Nun sehen wir, welche Dateien dieser findBefehl zurückgibt:

$ find . -path '*/node_modules/*' ./node_modules/dir3 ./node_modules/dir1 ./node_modules/file3 ./node_modules/file2 ./node_modules/file1 ./node_modules/dir2 

Dies zeigt die Dateien darin, node_modules aber nicht das node_modulesVerzeichnis selbst. So können wir die Dateien löschen mit:

$ find . -path '*/node_modules/*' -delete $ ls node_modules 
danke dude und wie oben in meiner frage erwähnt habe ich GNU `find` via homebrew installiert. ipatch vor 6 Jahren 1