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

Příkazy rm a rmdir odstraní soubory a adresáře v systémech Linux, macOS a dalších operačních systémech podobných Unixu. Jsou podobné příkazům del a deltree ve Windows a DOS. Tyto příkazy jsou velmi výkonné a mají několik možností.

Je důležité si uvědomit, že soubory a adresáře smazané pomocí rm a rmdir se nepřesouvají do koše. Jsou okamžitě odstraněny z vašeho počítače. Pokud omylem smažete soubory pomocí těchto příkazů, jediný způsob, jak je budete moci obnovit, je ze zálohy.

Jak odstranit soubory pomocí rm

Nejjednodušším případem je smazání jednoho souboru v aktuálním adresáři. Zadejte příkaz rm, mezeru a poté název souboru, který chcete odstranit.

rm file_1.txt

Pokud soubor není v aktuálním pracovním adresáři, zadejte cestu k umístění souboru.

rm ./path/to/the/file/file_1.txt

Do rm můžete předat více než jeden soubor. Pokud tak učiníte, odstraní se všechny zadané soubory.

rm file_2.txt file_3.txt

Zástupné znaky lze použít k výběru skupin souborů, které mají být odstraněny. Znak * představuje více znaků a znak ? představuje jeden znak. Tento příkaz odstraní všechny soubory obrázků png v aktuálním pracovním adresáři.

rm *.png

Tento příkaz odstraní všechny soubory, které mají příponu jednoho znaku. To by například odstranilo File.1 a File.2, ale ne File.12.

rm *.?

Pokud je soubor chráněn proti zápisu, budete před smazáním souboru vyzváni. Musíte odpovědět pomocí y nebo n a stisknout „Enter“.

Chcete-li snížit riziko použití rm se zástupnými znaky, použijte volbu -i (interaktivní). To vyžaduje, abyste potvrdili smazání každého souboru.

rm -i *.dat

Volba -f (force) je opakem interaktivního. Nevyžaduje potvrzení, i když jsou soubory chráněny proti zápisu.

rm -f filename

Jak odstranit adresáře pomocí rm

Chcete-li odstranit prázdný adresář, použijte volbu -d (adresář). Zástupné znaky (* a ?) můžete použít v názvech adresářů stejně jako v názvech souborů.

rm -d directory

Zadáním více než jednoho názvu adresáře se odstraní všechny zadané prázdné adresáře.

rm -d directory1 directory2 /path/to/directory3

Chcete-li odstranit adresáře, které nejsou prázdné, použijte volbu -r (rekurzivní). Aby bylo jasno, toto odstraní adresáře a všechny soubory a podadresáře v nich obsažené.

rm -r directory1 directory2 directory3

Pokud je adresář nebo soubor chráněn proti zápisu, budete vyzváni k potvrzení odstranění. Chcete-li odstranit adresáře, které nejsou prázdné, a potlačit tyto výzvy, použijte společně volby -r (rekurzivní) a -f (vynutit).

rm -rf directory

Zde je nutná péče. Chyba v příkazu rm -rf může způsobit ztrátu dat nebo poruchu systému. Je to nebezpečné a opatrnost je nejlepší politikou. Chcete-li porozumět struktuře adresářů a souborům, které budou odstraněny příkazem rm -rf, použijte příkaz tree.

  Jak nainstalovat webový server Caddy na Linux

Pokud používáte Ubuntu nebo jinou distribuci založenou na Debianu, použijte apt-get k instalaci tohoto balíčku do vašeho systému. V jiných distribucích Linuxu použijte místo toho nástroj pro správu balíčků vaší distribuce Linuxu.

sudo apt-get install tree

Spuštění příkazu tree vytvoří jednoduchý srozumitelný diagram adresářové struktury a souborů pod adresářem, ze kterého se spouští.

tree

Můžete také zadat cestu k příkazu tree, který způsobí spuštění stromu z jiného adresáře v systému souborů.

tree path/to/directory

Příkaz rm má také možnosti –one-file-system, –no-preserve-root, –preserve-root, ale ty jsou doporučeny pouze pro pokročilé uživatele. Pokud se něco pokazí, můžete omylem smazat všechny systémové soubory. Poraďte se s příkazy manuálová stránka Pro více informací.

  5 nejlepších přenosných operačních systémů Linux

Jak odstranit adresáře pomocí rmdir

Existuje další příkaz, nazvaný rmdir, který můžete použít k odstranění adresářů. Rozdíl mezi rm a rmdir je v tom, že rmdir může odstranit pouze adresáře, které jsou prázdné. Nikdy nesmaže soubory.

Nejjednodušším případem je smazání jednoho prázdného adresáře. Stejně jako u rm můžete do rmdir předat více jmen adresářů nebo cestu k adresáři.

Smažte jeden adresář v aktuálním adresáři předáním jeho názvu do rmdir:

rmdir directory

Odstraňte více adresářů předáním seznamu jmen do rmdir:

rmdir directory1 directory2 directory3

Smažte adresář, který není v aktuálním adresáři, zadáním úplné cesty k tomuto adresáři:

rmdir /path/to/directory

Pokud se pokusíte odstranit složku, která není prázdná, rmdir vám zobrazí chybovou zprávu. V následujícím příkladu rmdir úspěšně a tiše odstraní adresář klientů, ale odmítne odstranit adresář projektů, protože obsahuje soubory. Adresář projektů je ponechán přesně tak, jak byl, a soubory v něm zůstávají nedotčeny.

Když rmdir zobrazí chybu „Directory not empty“, přestane zpracovávat adresáře, které mu byly předány na příkazovém řádku. Pokud jste jej požádali o odstranění čtyř adresářů a v prvním z nich byly soubory, rmdir vám zobrazí chybovou zprávu a neudělá nic. Můžete jej přinutit ignorovat tyto chyby pomocí volby –ignore-fail-on-non-empty, aby byly zpracovány další adresáře.

V následujícím příkladu byly do rmdir předány dvě složky, jedná se o work/reports a work/quotes . Do příkazu byla zahrnuta volba –ignore-fail-on-non-empty. Složka work/reports obsahuje soubory, takže ji rmdir nemůže smazat. Možnost –ignore-fail-on-non-empty přinutí rmdir ignorovat chybu a přesunout se do další složky, kterou potřebuje zpracovat, což je práce/uvozovky. Toto je prázdná složka a rmdir ji smaže.

  Jak používat prstový příkaz v systému Linux

Toto byl použitý příkaz.

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

Můžete použít volbu -p (rodiče) k odstranění adresáře a také k odstranění jeho nadřazených adresářů. Tento trik funguje, protože rmdir začíná cílovým adresářem a poté se vrací zpět k nadřazenému adresáři. Tento adresář by nyní měl být prázdný, takže jej lze smazat pomocí rmdir a proces opakuje krokování zpět na cestu, která byla poskytnuta rmdir.

V následujícím příkladu je příkaz předaný do rmdir:

rmdir -p work/invoices

Faktury i pracovní adresáře se podle potřeby vymažou.

Ať už používáte Bash nebo jakýkoli jiný shell, Linux vám poskytuje flexibilní a výkonné příkazy pro mazání adresářů a souborů přímo z příkazového řádku terminálu. Někteří lidé dávají přednost pracovnímu postupu, který se točí kolem terminálu. Ostatní nemusí mít v této věci na výběr. Mohou pracovat na serverech bez nainstalovaného GUI nebo na vzdálené relaci na bezhlavém systému, jako je Raspberry Pi. Tyto příkazy jsou ideální pro tuto skupinu lidí.

Ale ať už preferujete jakýkoli typ pracovního postupu, tyto příkazy se velmi dobře hodí k tomu, aby byly zahrnuty do skriptů shellu. Pokud je skript spuštěn úlohou cron, může to pomoci automatizovat rutinní úkoly údržby, jako je čištění nežádoucích souborů protokolu. Pokud prozkoumáte tento případ použití, pamatujte na sílu těchto příkazů, vše pečlivě otestujte a vždy udržujte aktuální zálohu.