/ / Argument list zbyt długi błąd rm command - linux, rm

Argument lista zbyt długa komenda error rm - linux, rm

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 № 1

Jak 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.