GNU/Linux >> Znalost Linux >  >> Linux

Jak přesunout velké množství souborů v Linuxu

Chcete-li přesunout soubory z jednoho adresáře do druhého, použijte „mv ‘ příkaz se používá v Linuxu. Tento příkaz je ve výchozím nastavení k dispozici v Linuxu a lze jej použít k přesouvání souborů i adresářů.

Syntaxe, která se má použít pro příkaz mv je:

$ mv file1 file2 /tmp

Pokud chceme přesunout soubory, řekněme, stejné přípony (např. txt ) nebo které jsou očíslovány přírůstkovým způsobem (např. soubor_1 , soubor_2 , atd.), lze k určení všech těchto souborů použít zástupné znaky namísto zadávání jednotlivých jmen.

$ mv *.txt /tmp
$ mv file_* /tmp

V podstatě „mv ‘ může mít libovolný počet argumentů, což jsou soubory nebo adresáře, které mají být přesunuty. Posledním argumentem je cílový adresář, kam mají být přesunuty.

Problém s přesunem velkého počtu souborů

Linuxové systémy mají předem definovaný limit na maximální počet argumentů, které lze použít s jedním příkazem. Tento limit se liší systém od systému v závislosti na velikosti zásobníku.

Pokud je tedy zadán velmi vysoký počet souborů se zástupným znakem „mv ‘, Např. přes sto tisíc souborů, vyhodí chybu:„Seznam argumentů je příliš dlouhý “.

Například na obrázku níže složka obsahuje 253420 soubory. Když se je pokusíme přesunout, zobrazí výše uvedenou chybu.

$ ls -l | wc -l
$ ls | head -1000
$ mv file_* /tmp

Řešení:Použijte příkaz Najít

K vyřešení tohoto problému používáme „najít ‘příkaz. „najít ‘ příkaz v podstatě vyhledává soubory v adresářích na základě různých parametrů.

Spouštíme „najít ‘ ve stejném adresáři jako soubory, které chceme přesunout. Potom použijeme '-exec' parametr „najít ‘ což vám umožní spustit jakýkoli příkaz nad výstupem find.

Spouštíme ‘mv ‘ s '-exec' parametr.

$ find . -name "file_*" -exec mv  {} /tmp \;

Zde je první argument, '.' ((tečka) aktuální adresář) je adresář, kde se nacházejí soubory. Argument “-name” a řetězec za tím určují výraz, pomocí kterého lze vypsat požadované soubory.

Poté zadáme „mv ‘ příkaz za argumentem '-exec' . Otevřené závorky '{ }' jsou zástupný symbol pro argument, který má být použit z výstupu find.

Můžete to potvrdit spuštěním následujícího a ověřit, že soubory byly úspěšně přesunuty do ‘/tmp’ .

$ ls -l /tmp | wc -l

Související čtení :Jak zkopírovat velké množství souborů v Linuxu

Závěr

V tomto článku jsme viděli, jak přesunout velké množství souborů z jednoho adresáře do druhého a jak úspěšně obejít „Seznam argumentů je příliš dlouhý “ chyba v Linuxu.

Pokud máte nějakou zpětnou vazbu nebo dotazy, dejte nám vědět v komentářích níže!


Linux
  1. Jak zvýšit limit počtu otevřených souborů v Linuxu

  2. Jak přejmenovat soubory v Linuxu

  3. Jak komprimovat více souborů v systému Linux

  1. Jak najít velké soubory linux pomocí příkazů find a du

  2. Jak mohu přesouvat soubory pomocí xargs v Linuxu?

  3. Jak přesunout oddíl v GNU/Linuxu?

  1. Jak přesunout soubor v Linuxu

  2. Jak najít soubory v Linuxu

  3. Jak rozbalit soubory v Linuxu