Mam wiele nazwanych plików
sequence_1_0001.jpg
sequence_1_0002.jpg
sequence_1_0003.jpg
...
i nazwane pliki
sequence_1_0001.hmf
sequence_1_0002.hmf
sequence_1_0003.hmf
...
i nazwane pliki
sequence_2_0001.jpg
sequence_2_0002.jpg
sequence_2_0003.jpg
...
i
sequence_2_0001.hmf
sequence_2_0002.hmf
sequence_2_0003.hmf
...
Chcę tylko usunąć pliki, które zaczynają się od „sekwencji_1” i kończą na „.hmf”, ale nie chcę ich usuwać jeden po drugim, ponieważ są tysiące plików. Jak mogę określić w poleceniu rm, że chcę usunąć wszystko, które zaczynają się od prefiksu „sekwencja_1” i kończą się na „.hmf”?
Obecnie pracuję z systemem RedHat Linux, ale chciałbym wiedzieć, jak to zrobić w innych dystrybucjach.
find
podejście staje się łatwiejsze niż zgadywanie i sprawdzanie.Chociaż odpowiedź jw013 jest poprawna dla globowania wrt, to polecenie może się nie powieść, jeśli masz tysiące dopasowań: rozwinięta linia poleceń
rm sequence_1_0001.hmf sequence_1_0002.hmf ...
wygenerowana przez powłokę może być po prostu zbyt duża.Jak sugerował Dom, możesz również użyć
-delete
opcji zfind
:Zarówno
-maxdepth
i-delete
, choć nie w standardzie POSIX, są dość powszechne wfind
implementacjach na wolności. Dystrybucje Linuksa zazwyczaj używają GNUfind
, który z pewnością obsługuje te opcje.źródło
-delete
powinien być obsługiwany w najnowszych systemach GNU i BSD, podczas gdy-print0
jest tylko GNU. Prawdopodobnie jest też bardziej przenośny (chociaż nie powinien mieć znaczenia dla OP).działałby również w Bash.
źródło
bash
, a forma wypełniona zerami wymaga wersji 4, jak sądzę.