Entferne Dateien, wenn der Name KEINE Wörter enthält

7

Ich verwende Linux und beabsichtige, einige Dateien mit der Shell zu entfernen.

Ich habe einige Dateien in meinem Ordner, einige Dateinamen enthalten das Wort "gut", andere nicht. Zum Beispiel:

%Vor%

Ich möchte die Dateien entfernen, die NICHT "gut" im Namen enthalten, also sind die verbleibenden Dateien:

%Vor%

Wie geht das mit rm in der Shell? Ich versuche,

zu verwenden %Vor%

aber es funktioniert nicht.

Vielen Dank!

    
DocWiki 03.07.2011, 09:48
quelle

3 Antworten

16

Dieser Befehl sollte tun, was Sie brauchen:

%Vor%

Es wird wahrscheinlich schneller als andere Befehle ausgeführt, da es keine Regex verwendet (was langsam und unnötig für solch eine einfache Operation ist).

    
EdoDodo 03.07.2011, 09:55
quelle
6

Mit bash können Sie eine "negative" Übereinstimmung erhalten co_de% Shell-Option:

%Vor%     
glenn jackman 03.07.2011 11:53
quelle
4

Sie können find mit dem Operator -not verwenden:

%Vor%

Ich habe -exec verwendet, um rm dort aufzurufen, aber Ich frage mich, ob find eine eingebaute Löschaktion hat es tut, siehe unten .

Aber sehr vorsichtig damit. Beachten Sie, dass ich oben eine -a -not -name "." -Klausel einfügen musste, weil sonst . , das aktuelle Verzeichnis, übereinstimmte. Also würde ich gründlich mit -print testen, bevor ich das -exec rm {} \; -Bit einfüge!

Update : Yup, ich habe es noch nie benutzt, aber es gibt tatsächlich eine -delete Aktion. Also:

%Vor%

Seien Sie wieder vorsichtig und überprüfen Sie, ob Sie nicht mehr übereinstimmen, als Sie zuerst abgleichen möchten.

    
T.J. Crowder 03.07.2011 09:54
quelle

Tags und Links