(Resolved) -Bash /bin /mv lista zbyt długa

(Resolved) -Bash /bin /mv lista zbyt długa

Podczas pracy z dużą liczbą plików w systemie Linux nierzadko spotyka się błąd „/bin/mv: lista argumentów zbyt długa”. Ten błąd występuje podczas próby przeniesienia lub zmiany nazwy zbyt wielu plików jednocześnie i jest ograniczeniem podstawowego systemu operacyjnego. W tym artykule omówimy, co powoduje ten błąd, i zbadamy sposoby obejścia go, aby wydajnie i bez błędu operacje plików na dużą skalę. Niezależnie od tego, czy jesteś początkującym, czy doświadczonym użytkownikiem Linuksa, ten artykuł zapewni cenne informacje na temat przezwyciężenia tego wspólnego problemu.

-bash: /bin /mv: lista argumentów zbyt długo

Lista argumentów zbyt długa jest powszechnym problemem z bashem, który może się zdarzyć, gdy masz długie parametry lub argumenty wiersza poleceń. Zaczynasz uruchamiać skrypt, który rzuca błędy, takie jak „Nieprawidłowe polecenie” lub „zbyt długie”. Powodem tego jest to, że powłoka próbuje przeczytać koniec listy argumentów i nie ma końca rury wejściowej. Zmienna systemowa Arg_max definiuje Maksymalna długość znaków argumentów W poleceniu Shell.

Rozwiązania

Szybkie rozwiązanie to użycie Xargs Narzędzie wiersza poleceń lub znajdź polecenie z -exec… . Obie polecenia rozbiją duże polecenie na bardziej mniejsze i wykonują zadanie bez błędów.

  • Rozwiązanie 1: Znajdź z XARGS
  • Aby rozwiązać ten problem, możesz użyć -print0 opcja z "znajdować" polecenie i -0 opcja z poleceniem „Xargs”. To pozwoli „Xargs” Aby poprawnie obsługiwać pliki z przestrzeniami lub znakami specjalnymi w ich nazwach, a także umożliwić przetwarzanie dużej liczby plików bez napotkania błędu „lista argumentów”.

    Oto przykład:

    znajdować . -typ f -name "*.txt "-print0 | xargs -0 mv -t ~/dokumenty  

    W tym przykładzie opcja -print0 jest używana z poleceniem „Znajdź” do oddzielenia plików z znakiem zerowym zamiast nowej linii, a opcja -0 jest używana z poleceniem „xargs”, aby określić, że elementy wejściowe są oddzielone null postacie. Umożliwia to „XARG” obsługiwanie dużej liczby plików bez napotkania błędu „lista argumentów”.

  • Rozwiązanie 2: Znajdź z Exec
  • Zamiast używać XARGS, możemy również użyć polecenia EXEC. Znajdź tutaj wyszukiwanie plików, a EXEC wykonuje polecenie MV dla każdego pliku jeden po drugim i przenieś plik do katalogu docelowego.

    znajdować . -nazwa '*.txt '-exec mv  ~/ Documents/ \; 

    Domyślne powyższe polecenia będą rekurencyjne do podwodnych. Aby ograniczyć znalezisko do bieżącego katalogu tylko użycia -maksymalna głębokość a następnie liczba limitów do podwodnych.

    znajdować . -nazwa '*.txt '-maxdepth 1 -exec mv  ~/ Documents/ \; 

Wniosek

Podsumowując, błąd „MV: Lista argumentów zbyt długa” jest częstym problemem podczas pracy z dużą liczbą plików w Linux. Występuje, gdy liczba plików przekazywanych jako argumenty do polecenia „MV” przekracza maksymalny limit dozwolony przez system operacyjny. Aby przezwyciężyć ten problem, możemy użyć poleceń „Znajdź” i „Xargs”, aby przekazać dużą liczbę plików jako argumenty do polecenia „MV”, lub możemy użyć narzędzi takich jak „równolegle” lub „GNU Parallel”, aby wykonać duże -Operacje plików zasady wydajnie i bez błędów.

Zrozumienie przyczyn i rozwiązań w błędach „/bin/mv: lista argumentów zbyt długa” jest ważne dla każdego, kto pracuje z dużą liczbą plików w systemie Linux i pomoże ci uniknąć frustracji i zmarnowanego czasu podczas wykonywania operacji plików.