Ich habe viele Dateien mit dem Namen
sequence_1_0001.jpg
sequence_1_0002.jpg
sequence_1_0003.jpg
...
und Dateien mit dem Namen
sequence_1_0001.hmf
sequence_1_0002.hmf
sequence_1_0003.hmf
...
und Dateien mit dem Namen
sequence_2_0001.jpg
sequence_2_0002.jpg
sequence_2_0003.jpg
...
und
sequence_2_0001.hmf
sequence_2_0002.hmf
sequence_2_0003.hmf
...
Ich möchte nur die Dateien entfernen, die mit 'sequence_1' beginnen und mit '.hmf' enden, aber ich möchte sie nicht einzeln entfernen, da es Tausende von Dateien gibt. Wie kann ich dem Befehl rm angeben, dass alle Einträge entfernt werden sollen, die mit dem Präfix 'sequence_1' beginnen und mit '.hmf' enden?
Ich arbeite derzeit mit einem RedHat Linux-System, aber ich würde gerne wissen, wie das auch bei anderen Distributionen funktioniert.
find
Ansatz irgendwann einfacher wird, als zu raten und zu überprüfen.Obwohl die Antwort von jw013 richtig ist, kann dieser Befehl fehlschlagen, wenn Sie Tausende von Übereinstimmungen haben: Die
rm sequence_1_0001.hmf sequence_1_0002.hmf ...
von der Shell generierte erweiterte Befehlszeile ist möglicherweise einfach zu groß.Wie Dom vorgeschlagen hat, können Sie die
-delete
Option auch mitfind
folgenden Komponenten verwenden :Beide
-maxdepth
und-delete
, obwohl sie nicht im POSIX-Standard enthalten sind, sind beifind
Implementierungen in freier Wildbahn ziemlich verbreitet . Linux-Distributionen verwenden im Allgemeinen GNUfind
, das diese Optionen auf jeden Fall unterstützt.quelle
-delete
es auf neueren GNU- und BSD-Systemen unterstützt werden sollte, während-print0
es sich nur um GNU handelt. Es ist also wahrscheinlich auch portabler (obwohl es für das OP keinen Unterschied machen sollte).würde auch in Bash funktionieren.
quelle
bash
, und die null aufgefüllte Form benötigt Version 4, glaube ich.