Jak odstranit soubory a adresáře v terminálu Linux

Příkazy rm a rmdir slouží k odstraňování souborů a složek v operačních systémech Linux, macOS a dalších systémech unixového typu. Jsou obdobou příkazů del a deltree známých z Windows a DOS. Jedná se o mocné nástroje s rozsáhlými možnostmi.

Je nezbytné si uvědomit, že soubory a adresáře smazané prostřednictvím rm a rmdir nejsou přesunuty do koše. Jsou bezprostředně a nevratně vymazány z vašeho počítače. Pokud dojde k nechtěnému odstranění dat těmito příkazy, jediným způsobem, jak je lze obnovit, je ze zálohy.

Odstranění souborů pomocí příkazu rm

Pro smazání jediného souboru v aktuální složce použijte příkaz rm, následovaný mezerou a názvem souboru.

rm soubor_1.txt

Pokud se soubor nenachází v aktuálním adresáři, zadejte kompletní cestu k jeho umístění.

rm ./cesta/k/souboru/soubor_1.txt

S příkazem rm lze pracovat i s více soubory najednou. Pokud zadáte více názvů, budou všechny tyto soubory smazány.

rm soubor_2.txt soubor_3.txt

Pro výběr skupin souborů lze využít zástupné znaky. Hvězdička (*) zastupuje libovolný počet znaků a otazník (?) reprezentuje právě jeden znak. Následující příkaz vymaže všechny soubory s příponou .png v aktuální složce.

rm *.png

Tento příkaz odstraní soubory, které mají příponu s jedním znakem. Vymaže například Soubor.1 a Soubor.2, ale ne Soubor.12.

rm *.?

Při pokusu o smazání souboru chráněného proti zápisu budete vyzváni k potvrzení akce. Odpovězte stisknutím klávesy y (ano) nebo n (ne) a stiskněte klávesu Enter.

Pro snížení rizika při používání zástupných znaků s příkazem rm, využijte volbu -i (interaktivní). Ta vyžaduje potvrzení smazání u každého souboru.

rm -i *.dat

Volba -f (force) naopak potlačuje interaktivní dotazy. Nevyžaduje potvrzení, ani u souborů chráněných proti zápisu.

rm -f nazev_souboru

Odstranění složek pomocí příkazu rm

Pro odstranění prázdné složky použijte volbu -d (directory). Stejně jako u souborů, zástupné znaky (* a ?) lze využít i u názvů složek.

rm -d slozka

Zadáním více názvů složek se vymažou všechny zadané prázdné složky.

rm -d slozka1 slozka2 /cesta/k/slozka3

Pro odstranění složek, které nejsou prázdné, použijte volbu -r (recursive). Tato volba odstraní složku, včetně všech obsažených souborů a podsložek.

rm -r slozka1 slozka2 slozka3

Pokud je složka nebo soubor chráněn proti zápisu, budete opět vyzváni k potvrzení smazání. Pro smazání neprázdných složek a zároveň potlačení dotazů použijte kombinaci voleb -r (rekurzivní) a -f (vynutit).

rm -rf slozka

Zde je třeba být velmi opatrný. Chyba v příkazu rm -rf může způsobit ztrátu dat nebo i selhání systému. Věnujte proto zvýšenou pozornost a obezřetnost. Pro lepší pochopení struktury složek a souborů, které budou smazány, použijte příkaz tree.

V systémech Ubuntu a dalších distribucích založených na Debianu, nainstalujte tento balíček pomocí nástroje apt-get. V jiných distribucích použijte správce balíčků vašeho systému.

sudo apt-get install tree

Po spuštění příkazu tree se zobrazí přehledný diagram struktury složek a souborů v dané složce.

tree

Můžete také zadat cestu k příkazu tree, čímž se diagram vygeneruje z jiné složky.

tree cesta/k/slozka

Příkaz rm nabízí i další pokročilé volby, jako například --one-file-system, --no-preserve-root, a --preserve-root, které jsou však určeny pouze pro zkušené uživatele. V případě nesprávného použití hrozí riziko smazání systémových souborů. Pro více informací se podívejte do manuálových stránek.

Odstranění složek pomocí příkazu rmdir

Pro odstranění složek lze použít i příkaz rmdir. Rozdíl mezi rm a rmdir je v tom, že rmdir může odstranit pouze prázdné složky. Nikdy nesmaže soubory.

Nejjednodušším případem je smazání jedné prázdné složky. Stejně jako u rm, můžete do rmdir zadat více názvů složek nebo cestu.

Pro smazání složky v aktuálním adresáři zadejte její název do rmdir:

rmdir slozka

Pro odstranění více složek zadejte seznam názvů:

rmdir slozka1 slozka2 slozka3

Pro smazání složky, která není v aktuálním adresáři, zadejte celou cestu:

rmdir /cesta/k/slozka

Pokud se pokusíte smazat složku, která není prázdná, rmdir zobrazí chybovou zprávu. V následujícím příkladu rmdir úspěšně smaže složku klienti, ale odmítne smazat složku projekty, protože ta obsahuje soubory. Složka projekty a její obsah zůstanou nedotčeny.

Když rmdir zobrazí chybu „Directory not empty“, přestane zpracovávat další složky, které byly zadány. Pokud jste se pokusili smazat čtyři složky a v první byly soubory, rmdir zobrazí chybu a nic dalšího neprovede. Tuto chybu lze ignorovat pomocí volby --ignore-fail-on-non-empty. Tímto způsobem se budou zpracovávat i další složky.

V následujícím příkladu byly do rmdir zadány dvě složky: work/reports a work/quotes. Byla použita volba --ignore-fail-on-non-empty. Složka work/reports obsahuje soubory, takže ji rmdir nemůže smazat. Volba --ignore-fail-on-non-empty donutí rmdir chybu ignorovat a pokračovat k další složce, kterou je work/quotes. Tato složka je prázdná, a proto ji rmdir úspěšně smaže.

Použitý příkaz:

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

Volba -p (parents) umožňuje odstranit složku a zároveň její nadřazené složky. Toto funguje tak, že rmdir začne od cílové složky a poté postupuje zpět k nadřazeným složkám. Ty by měly být nyní prázdné a mohou být tedy také smazány pomocí rmdir. Tento proces se opakuje na zadané cestě.

V následujícím příkladu je příkaz pro rmdir:

rmdir -p work/invoices

Složky faktury i work budou dle potřeby vymazány.

Ať už používáte Bash nebo jiný shell, Linux poskytuje flexibilní a výkonné nástroje pro mazání složek a souborů přímo z příkazového řádku. Někteří uživatelé preferují práci v terminálu, jiní nemají na výběr. Může jít o servery bez grafického rozhraní nebo vzdálené relace na systémech bez monitoru, jako je Raspberry Pi. Tyto příkazy jsou ideální pro takové situace.

Bez ohledu na váš preferovaný pracovní styl, tyto příkazy se hodí pro zahrnutí do skriptů shellu. Pokud je skript spuštěn úlohou cron, může to automatizovat rutinní úkoly údržby, jako je promazávání nepotřebných souborů logů. Při prozkoumávání tohoto případu použití mějte na paměti sílu těchto příkazů, vše důkladně testujte a vždy si udržujte aktuální zálohu.