Wenn Sie versuchen, Elemente selektiv zu entfernen, können Sie verwenden find
.
find . -name "a*" \! -type d -delete
Sie können überprüfen, was Sie löschen, indem Sie Folgendes ausführen:
find . -name "a*" \! -type d -print
Erstellen Sie beispielsweise einige Verzeichnisse und Dateien:
mkdir -p testDir/a/b
cd testDir
touch apple.txt banana.txt ant.tx a/antelope.txt a/bus.txt a/b/apostrophe.txt a/b/bug.txt
So zeigen Sie die Dateien und Verzeichnisse an:
find . -name "*" -print
kehrt zurück:
.
./a
./a/antelope.txt
./a/b
./a/b/apostrophe.txt
./a/bus.txt
./ant.tx
./apple.txt
./banana.txt
So überprüfen Sie, was gelöscht wird:
find . -name "a*" \! -type d -print
kehrt zurück:
./a/antelope.txt
./a/b/apostrophe.txt
./ant.tx
./apple.txt
So löschen Sie die Dateien:
find . -name "a*" \! -type d -delete
So überprüfen Sie, ob nur * Dateien gelöscht wurden:
find . -name "*" -print
kehrt zurück:
.
./a
./a/b
./a/bus.txt
./banana.txt
Zusätzlich zu den anderen Antworten hier empfehle ich, dass Sie die Tab-Vervollständigung mehr und weniger Globbing verwenden. Aus Ihrer Frage geht hervor, dass Sie versuchen, eine einzelne Datei zu löschen, aber nicht den vollständigen Namen eingeben möchten. In diesem Fall sollten Sie stattdessen
*
schlagen Tab. Das Ausfüllen von Registerkarten ist viel sicherer.Wenn Sie tatsächlich beabsichtigen, mehrere Dateien zu löschen, deren Name mit einem Glob übereinstimmt, sollten Sie, wie bereits erwähnt, am besten zweimal überlegen, bevor Sie die Eingabetaste drücken. Darüber hinaus können Sie beruhigt sein, wenn Sie eine Sicherungslösung verwenden, die alle Änderungen während der Durchführung sichert, sodass Sie Fehler jederzeit wiederherstellen können, ohne dass das Risiko eines Datenverlusts besteht.
quelle