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

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

Ich habe den größten Teil eines Nachmittags damit verbracht, das herauszufinden.

Antwort1

So löschen Sie alle Dateien in einem beliebigen Verzeichnis, das sich unter dem aktuellen befindet und den Namen hat, und node_modulesbehalten dabei Folgendes bei node_modules:

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

(Dies wurde mit GNU getestet find, aber ich gehe davon aus, dass sich BSD/OSX findähnlich verhalten.)

Beispiel

Lassen Sie uns ein node_modulesVerzeichnis mit einigen Dateien darin erstellen:

$ mkdir -p node_modules/dir{1..3}
$ touch node_modules/file{1..3}

Sehen wir uns nun an, 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

Hier werden die Dateien angezeigtinnen node_modulesAbernichtdas node_modulesVerzeichnis selbst. Somit können wir die Dateien löschen mit:

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

verwandte Informationen