Jak usunąć wszystko z katalogu?


25

Jak usunąć wszystko w katalogu, w tym ukryte pliki i katalogi?

W tej chwili używam:

rm -rf *
rm -rf .*

5
Możesz je połączyć z rm -rf .* *.
użytkownik nieznany

2
Możesz przejść o jeden katalog w górę, a następnie uruchomićrm -rf yourdirectory/*
shreyansp,

1
przepraszam, brakowało ukrytej części katalogu. Poprzednie rozwiązanie dla użytkowników obejmuje to
shreyansp,

Ta druga opcja, którą opublikowałeś, jest bardzo niebezpieczna. Będzie pasować do ..katalogu, który usunie wszystko, co znajduje się w katalogu powyżej .
Richard Peterson

Odpowiedzi:


17

Prosty i bezpośredni:

find -delete 

Obejmuje katalogi i ukryte pliki. Przynajmniej gnu-find wie -delete, że findmożesz się różnić.


1
Aby uniknąć usunięcia katalogu, użyj find /path -delete -mindepth 1.
orodbhen

@orodbhen: find -delete nie usunie katalogu, w którym uruchomisz polecenie (jak w pytaniu z rm).
użytkownik nieznany

11

Najlepsza odpowiedź brzmi: nie rób tego. Rekurencyjnie usuń sam katalog, a następnie utwórz go ponownie jako pusty katalog. Bardziej niezawodne i łatwiejsze do zrozumienia dla innych osób. Po ponownym utworzeniu katalog może mieć innego właściciela, grupę i uprawnienia. Jeśli są one ważne, bądź ostrożny. Ponadto, jeśli jakieś uruchomione programy mają otwarte uchwyty plików (deskryptory) w katalogu, nie będziesz chciał go usuwać. Jeśli żaden z tych specjalnych przypadków nie ma zastosowania, łatwiej jest usunąć cały katalog.


7
Jak to jest łatwiejsze. „Uważaj” nie jest odpowiedzią. Nie rozumiem, dlaczego ktoś usuwa katalog i odbudowuje go ponownie.
użytkownik nieznany

Dodałem wyrażenie „jako pusty katalog”, być może jest to bardziej jasne.
Chris Quenelle,

2
Nie, to nie wyjaśnia, dlaczego usuwasz katalog i tworzysz go ponownie. Do rzeczy, które należy wziąć pod uwagę, należy również data / czas utworzenia.
użytkownik nieznany

2
Jeśli ten katalog jest bieżącym katalogiem roboczym jakiegoś procesu, możesz napotkać problemy. Ponadto, jeśli usuniesz katalog, usuniesz informacje o jego uprawnieniach i własności.


5

Zakładając bash 4+:

shopt -s dotglob
rm -rf -- *
##or:
rm -rf ./*

Po włączeniu dotglob *rozwija się do wszystkich plików i katalogów, nawet tych, które zaczynają się od .- ale nie rozwija się do .i .., dzięki czemu można z niego bezpiecznie korzystać rm.


2

jeśli jesteś w katalogu:

cd .. && rm -rf dir && mkdir dir && cd dir

Inaczej:

rm -rf /path/to/dir && mkdir /path/to/dir



1

Co powiesz na używanie find. Myślę, że jest to ogólnie dobry wybór, gdy trzeba przekopać podkatalogi.

find . -type f -exec rm {} \;

1
jest przełącznik -delete, więc możesz usuwać katalogi. (przynajmniej w gnu-find).
użytkownik nieznany

nie spowoduje to usunięcia podkatalogów
sasha

-2

Spróbować rm -rf *?*. Spowoduje to usunięcie normalnych i ukrytych plików.


4
Nie w żadnej znanej mi powłoce.
Gilles „SO- przestań być zły”

masz rację. nie usuwa podkatalogów.
gladimdim

4
Bardziej prawdopodobne jest, że problem *?*nie będzie pasował do plików / katalogów „kropkowych” (chyba że włączyłeś dotglobopcję w bash , GLOB_DOTSopcję w zsh lub równoważną dla jakiejkolwiek powłoki, której używasz).
Chris Johnsen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.