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.