Mam serwer oparty na systemie Linux, za pomocą którego wykonuję manioulation plików i obsługuję wiele innych serwerów.
Zasadniczo ten serwer (powiedzmy serwer1) pobiera dane wejściowe jako plik .mp3 z innych serwerów i konwertuje na inne formaty plików (.wav, .txt i .xml) i wysyła odpowiedź na inne serwery.
Przez pewien czas mój folder (Say / Somepath / MyInputFolder) ma teraz GB danych, które chcę usunąć.
Próbowałem rm -r *
polecenie, ale mówi:
Argument list too long
Próbowałem też rm -r *.mp3
i rm -r *.txt
aby usunąć te pliki osobno, ale powoduje to ten sam błąd.
Próbowałem również tego SO pytanie i przeczytaj to połączyć.
Próbowałem rozwiązania powyższego pytania SO i otrzymałem błąd jako ostrzeżenie.
find . -name "*.txt" -maxdepth 1 -print0 | xargs -0 rm
find: warning: you have specified the -maxdepth option after a non-option argument -name, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
Jak mogę to osiągnąć?
Odpowiedzi:
3 dla odpowiedzi № 1Jak już wspomniano w komentarzu do odpowiedzi, którą połączyłeś, musisz umieścić -maxdepth bezpośrednio po ścieżce. Tak jak w przypadku:
find . -maxdepth 1 -name "*.txt" -print0 | xargs -0 rm
2 dla odpowiedzi nr 2
Też mam ten sam wyjątek. Miałem ponad 1lakh plików. tutaj jest polecenie, które musisz wielokrotnie uruchamiać
$ rm -f ls|tail -10000
wykonane 10 razy.
2 dla odpowiedzi nr 3
ls | tail -10000 | xargs rm -rf
Wykonano więcej razy.
2 dla odpowiedzi № 4
To zostało odebrane, ale chciałem to dodać, bo napotkasz to pytanie.
find
ma swoje własne -delete
opcja, która usunie znalezione pliki. Możesz więc po prostu:
find -maxdepth 1 -name "*.txt" -delete
Jeśli chcesz przeczytać więcej na ten temat, proponuję ten link.