2017-01-20 17 views
-1

Ich habe ein Verzeichnis, das viele Dateien in verschiedenen Formaten enthält. Ich würde gerne wissen, wie ich alle Dateien mit einem bestimmten Format (sagen wir * .dat) löschen kann, außer ein paar Dateien im selben Format (z. B. A.dat und B.dat). Bitte beraten!Löschen Sie alle Dateien außer ein paar mit bash Befehl

+1

Was haben Sie versucht? und wie hast du versagt? – Inian

+2

http://unix.stackexchange.com/a/214410/13792 – choroba

Antwort

1

würde ich ein kleines Skript schreiben (als Kommandozeilen-Einzeiler es etwas zu groß ist):

#!/bin/sh 
for f in *.dat; do 
    case $f in 
     (A.dat|B.dat) 
     ;;   # do nothing 
     (*) 
     rm -- "$f";; # remove the file 
    esac 
done 

Als Alternative können Sie eine interaktive rm -i *.dat verwenden, die Sie für jede Datei fragt wenn es entfernt werden sollte. Antwort y für die Dateien, die Sie nicht mehr benötigen, und n für A.dat und B.dat.

Moderne Shells wie zsh und bash bieten auch leistungsstarke Globbing-Funktionen für Ihr Problem. Ich schlage vor, dass Sie ihre Manualseiten lesen, die Ihnen helfen werden, ein kompetenter Shell-Guru zu werden.

+0

Danke für die Antwort, das funktioniert für mich, aber ich frage mich, ob es ein One-Line-Skript gibt, das das gleiche vorzugsweise tun kann !! –

Verwandte Themen