Jak usunąć wszystkie pliki zaczynające się od określonego ciągu znaków w Linuksie
Muszę znaleźć wszystkie pliki zaczynające się od nazwy NAME w drzewie katalogów i usunąć wszystkie te pliki za pomocą jednego polecenia powłoki.
Muszę znaleźć wszystkie pliki zaczynające się od nazwy NAME w drzewie katalogów i usunąć wszystkie te pliki za pomocą jednego polecenia powłoki.
Usuń wszystkie pliki w bieżącym katalogu i jego podkatalogach, których nazwa zaczyna się od “foo”:
$ find . -type f -name foo\* -exec rm {} \;
Uwaga: używaj z rozwagą - najpierw zrób kopię zapasową - wykonaj też najpierw próbę na sucho, np.
$ find . -type f -name foo\*
poda ci tylko nazwy plików, które zostaną usunięte.
Próbowałem w ten sposób to działa dla mnie spróbuj poniższe polecenie.
rm -rf Example*
tutaj “Przykład” jest tekstem, który jest wspólny dla wszystkich plików.
Z opcją globstar (włącz z shopt -s globstar):
rm -f **/NAME*
**/ rozszerza się do ./, */, */*/, */*/*/ itd. Jeśli masz nazwę katalogu zaczynającą się od NAME, polecenie będzie narzekać, że rm nie może usuwać katalogów, ale to wszystko.
Zauważ, że może to napotkać ograniczenia długości wiersza poleceń, jeśli glob pasuje do wielu plików.
Alternatywnie, z jak najmniejszą liczbą wywołań rm, ale nie podlega ograniczeniom długości wiersza poleceń:
find . -type f -name 'NAME*' -exec rm -f {} +
(Zwróć uwagę na + zamiast \; do zamknięcia instrukcji -exec).
find . -name 'foo'* -type f -delete wydaje się być najprostszą odpowiedzią.
Możesz uruchomić to bez flagi -delete wcześniej, aby zobaczyć, które pliki zostaną usunięte.