Android

Hur man tar bort (ta bort) katalog i Linux

Ta bort filer och töm papperskorg

Ta bort filer och töm papperskorg

Innehållsförteckning:

Anonim

Det finns flera olika sätt att ta bort kataloger i Linux-system. Om du använder en skrivbordsfilhanterare som Gnome's Files eller KDE's Dolphin kan du ta bort filer och kataloger med hjälp av chefens grafiska användargränssnitt. Men om du arbetar på en huvudlös server eller vill ta bort flera kataloger på en gång är ditt bästa alternativ att ta bort katalogerna (mapparna) från kommandoraden.

, kommer vi att förklara hur man tar bort kataloger i Linux med hjälp av rmdir , rm och find kommandon.

Innan du börjar

När du tar bort en katalog med din Desktop-filhanterare flyttas katalogen till papperskorgen och kan enkelt återställas.

Var extra försiktig när du tar bort filer eller kataloger från kommandoraden, eftersom när katalogen har raderats med kommandona som förklaras kan den inte återställas helt.

För de flesta Linux-filsystem kräver det att ta bort en katalog skrivtillstånd för katalogen och dess innehåll. Annars får du "Operation not allow" -fel.

Katalognamn med ett mellanslag i dem måste undgås med ett motstånd ( / ).

Ta bort kataloger med rmdir

rmdir är ett kommandoradsverktyg för att ta bort tomma kataloger. Det är användbart när du bara vill ta bort en katalog om den är tom utan att behöva kontrollera om katalogen är tom eller inte.

Om du vill ta bort en katalog med rmdir skriver du kommandot följt av namnet på katalogen du vill ta bort. Om du till exempel dir1 ta bort en katalog med namnet dir1 du:

rmdir dir1

Om katalogen inte är tom får du följande fel:

rmdir: failed to remove 'dir1': No such file or directory

I detta fall måste du använda rm kommandot eller ta bort rm manuellt innan du kan ta bort det.

Ta bort kataloger med rm

rm är ett kommandoradsverktyg för att radera filer och kataloger. Till skillnad från rmdir kan rm kommandot ta bort både tomma och icke-tomma kataloger.

Som standard tar rm inte bort kataloger när de används utan något alternativ. För att radera en tom katalog, använd alternativet -d ( --dir ) och för att radera en icke-tom katalog och allt innehåll använder alternativet -r (- --recursive eller -R ).

Till exempel för att radera en katalog med namnet dir1 tillsammans med allt innehåll du skulle skriva:

rm -r dir1

Om en katalog eller en fil i katalogen är skrivskyddad, uppmanas du att bekräfta borttagningen. För att ta bort en katalog utan att uppmanas använd alternativet -f :

rm -rf dir1

För att ta bort flera kataloger på en gång använder du kommandot rm följt av namnen på katalognamnen separerade med mellanslag. Kommandot nedan tar bort varje listad katalog och deras innehåll:

rm -r dir1 dir2 dir3

Alternativet -i berättar för rm att be dig bekräfta borttagningen av varje underkatalog och fil. Om katalogen innehåller många filer kan detta vara lite irriterande så du kan överväga att använda alternativet -I vad som kommer att fråga dig bara en gång innan du fortsätter med raderingen.

rm -rI dir1

Ta bort katalogtypen y och tryck på Enter .

rm: remove 1 argument recursively? y

Du kan också använda regelbundna utvidgningar för att matcha och ta bort flera kataloger. För att ta bort alla kataloger på första nivån i den aktuella katalogen som slutar med _bak , använder du följande kommando:

rm -r *_bak

Att använda regelbundna utvidgningar när du tar bort kataloger kan vara riskabelt. Det rekommenderas först att lista katalogerna med ls kommandot så att du kan se vilka kataloger som ska raderas innan du kör rm kommandot.

Ta bort kataloger med find

find är ett kommandoradsverktyg som låter dig söka efter filer och kataloger baserat på ett givet uttryck och utföra en åtgärd på varje matchad fil eller katalog.

Det vanligaste scenariot är att använda sökkommandot för att ta bort kataloger baserat på ett mönster. Om du till exempel _cache ta bort alla kataloger som slutar med _cache i den aktuella arbetskatalogen skulle du köra:

find. -type d -name '*_cache' -exec rm -r {} +

Låt oss analysera kommandot ovan:

  • /dir - rekursivt sökning i den aktuella arbetskatalogen ( . ). -type d - begränsar sökningen till kataloger. -name '*_cache' - sök endast i kataloger som slutar med _cache -exec - kör ett externt kommando med valfria argument, i detta fall är det rm -r . {} + - lägger till de hittade filerna i slutet av rm kommandot.

Ta bort alla tomma kataloger

För att ta bort alla tomma kataloger i ett katalogträd du skulle använda:

find /dir -type d -empty -delete

Här är en förklaring till de använda alternativen:

  • /dir - rekursivt sökning i /dir katalogen. -type d - begränsar sökningen till kataloger. -empty - begränsar sökningen endast till tomma kataloger. -delete - tar bort alla hittade tomma kataloger i undertråden. -delete kan bara ta bort tomma kataloger.

Använd alternativet- -delete med stor försiktighet. -delete utvärderas som ett uttryck och om du lägger till alternativet- -delete först kommer kommandot att ta bort allt under de startpunkter du angav. Använd alltid -delete som det sista alternativet och testa kommandot först utan alternativet -delete innan du raderar det.

/ bin / rm: Argumentlistan är för lång

Det här felmeddelandet visas när du använder rm kommandot för att ta bort en katalog som innehåller ett stort antal filer. Detta händer eftersom antalet filer är större än systemgränsen för storleken på kommandoradsargumentet.

Det finns flera olika lösningar på detta problem. Till exempel kan du cd till katalogen och manuellt eller använda en slinga för att ta bort underkataloger en efter en.

Den enklaste lösningen är först att ta bort alla filer i katalogen med sökkommandot och sedan ta bort katalogen:

find /dir -type f -delete && rm -r /dir

Slutsats

Med rm och find du ta bort kataloger baserat på olika kriterier snabbt och effektivt.

Att ta bort kataloger är en enkel och enkel process men du måste vara försiktig så att du inte tar bort viktiga data.

rm rmdir hitta terminal