GNU/Linux >> Znalost Linux >  >> Linux

Nelze odebrat soubory z adresáře s chybou „Seznam argumentů je příliš dlouhý“

Problém

Při pokusu o výpis nebo práci s velkým počtem souborů z příkazového řádku se zobrazí následující chyba:

$ ls -l *.xml | wc -l
bash: /bin/ls: Argument list too long
0
$ rm *.xml
bash: /bin/rm: Argument list too long

nebo při pokusu o odstranění velkého počtu souborů pomocí příkazu find selže s níže uvedenou chybovou zprávou:

$ find /u01/oracle/apps/fs1/EBSapps/appl/xdo/12.0.0/temp/*.xml -mtime +120 -exec rm -v {} \;
bash: /usr/bin/find: Argument list too long

Řešení

Jádro má velký, ale konečný limit pro příkazový řádek a výše uvedené chyby ukazují, že limit byl dosažen.

K vyřešení tohoto problému lze použít xargs, který přijímá seznam názvů souborů ze svého standardního vstupu a spouští na nich příkaz. Můžete použít „najít“ v kombinaci s „xargs“, jak je uvedeno níže:

# find . -type f -name '*.xml' | xargs rm

POZNÁMKA :Výše ​​uvedený příkaz smaže všechny soubory s příponou .xml v aktuálním adresáři bez jakéhokoli potvrzení. Před spuštěním bych vám doporučil provést zálohu potřebných souborů. Vždy je dobré ověřit na zkušebním stroji a zkontrolovat před pokračováním na výrobním stroji.


Linux
  1. Ubuntu – seznam argumentů je příliš dlouhý?

  2. bash:/bin/tar:Při komprimaci mnoha souborů pomocí tar je seznam argumentů příliš dlouhý

  3. Počítání počtu souborů v adresáři pomocí příkazu terminálu OSX

  1. Proč se příkaz Ls pomalu přerušuje v adresáři Nfs se spoustou souborů?

  2. Nainstalovat/odebrat seznam balíčků z příkazového řádku pomocí Apt-get?

  3. Existuje příkaz UNIX pro seznam všech nedávno odstraněných souborů ze systému

  1. Linux ls Command - Seznam souborů

  2. najít a odstranit soubory s mezerou pomocí příkazu find v Linuxu

  3. Chyba příliš dlouhého seznamu argumentů pro příkazy rm, cp, mv