Ich muss alle Dateien finden, die mit dem Namen NAMEin einem Verzeichnisbaum beginnen, und alle diese Dateien mit einem Shell-Befehl entfernen.
Ich muss alle Dateien finden, die mit dem Namen NAMEin einem Verzeichnisbaum beginnen, und alle diese Dateien mit einem Shell-Befehl entfernen.
Antworten:
um alle dateien zu löschen, deren name name hat --- können sie benutzen
find -name . 'name*' -exec rm {} \;
grephat einen -execSchalter?
Löschen Sie alle Dateien im aktuellen Verzeichnis und seinen Unterverzeichnissen, deren Dateiname mit "foo" beginnt:
$ find . -type f -name foo\* -exec rm {} \;
Achtung: Vorsichtig verwenden - zuerst sichern - auch zuerst trocken laufen, z
$ find . -type f -name foo\*
teilt Ihnen nur die Namen der Dateien mit, die gelöscht werden sollen.
find . -type f -name foo\* -deletemachte den Trick
Ich habe versucht, auf diese Weise funktioniert es für mich unter Befehl versuchen.
rm -rf Example*
Hier ist "Beispiel" Text, der für alle Dateien gleich ist.
Sie können verwenden find:
find . -name "name*" -exec rm {} \;
Mit der globstarOption (aktivieren mit shopt -s globstar):
rm -f **/NAME*
**/Expandiert zu ./, */, */*/, */*/*/etc. Wenn Sie einen haben Verzeichnisnamen mit Start NAME, wird sich beschweren , der Befehl , dass rmVerzeichnisse nicht entfernen können, aber das ist alles.
Beachten Sie, dass dies möglicherweise zu Einschränkungen der Befehlszeilenlänge führen kann, wenn der Glob mit vielen Dateien übereinstimmt.
Alternativ können Sie mit so wenigen Aufrufen rmwie möglich, jedoch ohne Einschränkung der Befehlszeilenlänge, Folgendes ausführen:
find . -type f -name 'NAME*' -exec rm -f {} +
(Beachten Sie die +statt \;der engen -execErklärung.)
find . -name 'foo'* -type f -delete scheint die einfachste Antwort zu sein.
Sie können dies ohne das -deleteFlag ausführen, um zu sehen, welche Dateien gelöscht werden.
Suchen Sie nach der "Inode" -Nummer der Datei / des Ordners und löschen Sie diese mit der Inode-Nummer. Unten ist ein Beispiel:
ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p
find . -inum 3407873 -exec rm -rf {} \;