Existuje několik různých způsobů, jak odstranit adresáře v systémech Linux. Pokud používáte správce souborů na ploše, jako je Gnome's Files nebo KDE's Dolphin, můžete mazat soubory a adresáře pomocí grafického uživatelského rozhraní správce. Pokud však pracujete na bezhlavém serveru nebo chcete odstranit více adresářů najednou, nejlepší možností je odstranit adresáře (složky) z příkazového řádku.
V tomto článku vysvětlíme, jak odstranit adresáře v Linuxu pomocí rmdir , rm a find příkazy.
Než začnete #
Při odstraňování adresáře pomocí správce souborů na ploše se adresář ve skutečnosti přesune do koše a lze jej snadno obnovit.
Při odstraňování souborů nebo adresářů z příkazového řádku buďte zvlášť opatrní, protože jakmile je adresář odstraněn pomocí příkazů vysvětlených v tomto článku, nelze jej plně obnovit.
Na většině souborových systémů Linux vyžaduje odstranění adresáře oprávnění k zápisu do adresáře a jeho obsahu. V opačném případě se zobrazí chyba „Operace není povolena“.
Názvy adresářů s mezerou musí být escapovány zpětným lomítkem (/ ).
Odebrání adresářů pomocí rmdir #
rmdir je nástroj příkazového řádku pro mazání prázdných adresářů. Je to užitečné, když chcete smazat adresář pouze v případě, že je prázdný, aniž byste museli kontrolovat, zda je adresář prázdný nebo ne.
Chcete-li odstranit adresář pomocí rmdir zadejte příkaz následovaný názvem adresáře, který chcete odstranit. Chcete-li například odstranit adresář s názvem dir1 byste napsali:
rmdir dir1 Pokud adresář není prázdný, zobrazí se následující chyba:
rmdir: failed to remove 'dir1': No such file or directory
V tomto případě budete muset použít rm nebo ručně odstraňte obsah adresáře, než jej budete moci smazat.
Odebrání adresářů pomocí rm #
rm je nástroj příkazového řádku pro mazání souborů a adresářů. Na rozdíl od rmdir rm příkaz může odstranit prázdné i neprázdné adresáře.
Ve výchozím nastavení, při použití bez jakékoli možnosti rm neodstraní adresáře. Chcete-li smazat prázdný adresář, použijte -d (--dir ) a k odstranění neprázdného adresáře a veškerého jeho obsahu použijte -r (--recursive nebo -R ).
Chcete-li například odstranit adresář s názvem dir1 spolu s celým jeho obsahem byste napsali:
rm -r dir1
Pokud je adresář nebo soubor v adresáři chráněn proti zápisu, budete vyzváni k potvrzení odstranění. Chcete-li odstranit adresář bez vyzvání, použijte -f možnost:
rm -rf dir1
Chcete-li odstranit více adresářů najednou, vyvolejte rm příkaz, za kterým následují názvy adresářů oddělené mezerou. Níže uvedený příkaz odstraní všechny uvedené adresáře a jejich obsah:
rm -r dir1 dir2 dir3
-i volba říká rm zobrazí výzvu k potvrzení odstranění každého podadresáře a souboru. Pokud adresář obsahuje mnoho souborů, může to být trochu nepříjemné, takže můžete zvážit použití -I možnost, která vás vyzve pouze jednou před pokračováním v mazání.
rm -rI dir1
Chcete-li odstranit adresář, zadejte y a stiskněte Enter .
rm: remove 1 argument recursively? y
Můžete také použít běžná rozšíření k přiřazení a odstranění více adresářů. Chcete-li například odstranit všechny adresáře první úrovně v aktuálním adresáři, který končí _bak , použili byste následující příkaz:
rm -r *_bak
Používání pravidelných rozšíření při odstraňování adresářů může být riskantní. Doporučuje se nejprve uvést adresáře s ls takže před spuštěním rm uvidíte, jaké adresáře budou smazány příkaz.
Odebrání adresářů pomocí find #
find je nástroj příkazového řádku, který vám umožňuje vyhledávat soubory a adresáře na základě daného výrazu a provádět akci s každým odpovídajícím souborem nebo adresářem.
Nejběžnějším scénářem je použití find příkaz k odstranění adresářů na základě vzoru. Chcete-li například odstranit všechny adresáře, které končí _cache v aktuálním pracovním adresáři byste spustili:
find . -type d -name '*_cache' -exec rm -r {} + Pojďme analyzovat výše uvedený příkaz:
/dir- rekurzivně vyhledávat v aktuálním pracovním adresáři (.).-type d- omezuje vyhledávání na adresáře.-name '*_cache'- prohledávat pouze adresáře, které končí_cache-exec- provede externí příkaz s volitelnými argumenty, v tomto případě to jerm -r.{} +- připojí nalezené soubory na konecrmpříkaz.
Odstranění všech prázdných adresářů #
Chcete-li odstranit všechny prázdné adresáře ve stromu adresářů, spusťte:
find /dir -type d -empty -delete Zde je vysvětlení použitých možností:
/dir- rekurzivně hledat v/diradresář.-type d- omezuje vyhledávání na adresáře.-empty- omezuje vyhledávání pouze na prázdné adresáře.-delete- smaže všechny nalezené prázdné adresáře v podstromu.-deletemůže odstranit pouze prázdné adresáře.
Použijte -delete možnost s extrémní opatrností. Příkazový řádek find je vyhodnocen jako výraz, a pokud přidáte -delete Pokud zvolíte možnost první, příkaz odstraní vše pod vámi zadanými počátečními body.
Vždy nejprve otestujte příkaz bez -delete a použijte -delete jako poslední možnost.
/bin/rm:Seznam argumentů je příliš dlouhý #
Tato chybová zpráva se zobrazí, když použijete rm příkaz k odstranění adresáře, který obsahuje velké množství souborů. K tomu dochází, protože počet souborů je větší než systémový limit velikosti argumentu příkazového řádku.
Existuje několik různých řešení tohoto problému. Můžete například cd do adresáře a ručně nebo pomocí smyčky odstranit podadresáře jeden po druhém.
Nejjednodušším řešením je nejprve smazat všechny soubory v adresáři pomocí find a poté smažte adresář:
find /dir -type f -delete && rm -r /dir Závěr č.
Pomocí rm a find můžete rychle a efektivně odstranit adresáře na základě různých kritérií.
Odstranění adresářů je jednoduchý a snadný proces, ale musíte být opatrní, abyste nesmazali důležitá data.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.