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 konecrm
pří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/dir
adresář.-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.-delete
můž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ář.