Powiedzmy, że mam 20 plików o nazwie FOOXX, gdzie XX to numer pliku, np. 01, 02 itd.
W tej chwili, jeśli chcę usunąć wszystkie pliki mniejsze niż 10, jest to łatwe i po prostu używam symboli wieloznacznych, np. Rm FOO0 *
Jeśli jednak chcę usunąć określone pliki z zakresu, np. 13-15, staje się to trudniejsze.
rm FPP [13-15] nie działa i pyta mnie, czy chcę usunąć wszystkie pliki. Podobnie rm FOO1 [3-5] chce usunąć wszystkie pliki, które zaczynają się od FOO1
Więc jaki jest najlepszy sposób na usunięcie takich zakresów plików?
Próbowałem zarówno z bash, jak i zsh, i nie sądzę, że różnią się tak bardzo dla tak podstawowego zadania?
Odpowiedzi:
W bash możesz użyć:
lub
usunąć FOO13, FOO14 i FOO15.
Nawiasy klamrowe Bash są tutaj udokumentowane .
źródło
rm FOO{13..15}
.bash
polecenia tworzą podzbiórz
poleceń powłoki.W przypadku przyszłych czytelników
find
polecenie może również usuwać pliki. Postanowiłem rozwiązać ten problem:ale wybrana odpowiedź jest najprostszą odpowiedzią na to pytanie.
źródło
find . -name "*.o" -delete
i działało to jak urok)ls | grep regex | xargs rm
źródło
find -regex ... -print0 | xargs -0 ...
do tego, inaczej nie powiedzie się w przypadku nazw plików ze spacjami.find
, równie dobrze możesz po prostu użyć-exec
.