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ć.
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.
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.
8
rm -rf --*.[!.]*..?*
Każdy z trzech wzorów rozwija się do siebie, jeśli nie pasuje do niczego, ale nie stanowi to problemu, ponieważ chcemy dopasować wszystko i rm -fzignorować nieistniejące argumenty.
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.
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).
rm -rf .* *
.rm -rf yourdirectory/*
..
katalogu, który usunie wszystko, co znajduje się w katalogu powyżej .Odpowiedzi:
Prosty i bezpośredni:
Obejmuje katalogi i ukryte pliki. Przynajmniej gnu-find wie
-delete
, żefind
możesz się różnić.źródło
find /path -delete -mindepth 1
.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.
źródło
Każdy z trzech wzorów rozwija się do siebie, jeśli nie pasuje do niczego, ale nie stanowi to problemu, ponieważ chcemy dopasować wszystko i
rm -f
zignorować nieistniejące argumenty.Zauważ,
.*
że pasowałoby..
.źródło
Zakładając bash 4+:
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
.źródło
jeśli jesteś w katalogu:
cd .. && rm -rf dir && mkdir dir && cd dir
Inaczej:
rm -rf /path/to/dir && mkdir /path/to/dir
źródło
O mój Zsh
Ponownie, dotyczy to tylko Zsh.
źródło
*(D)
(D
kwalifikator glob włączaglob_dots
opcję dla tego wzorca).rm -rf {.,}*
(w przeciwieństwie do bash, zsh nie obejmuje.
i..
do{.,}*
, przynajmniej na moim komputerze).Co powiesz na używanie
find
. Myślę, że jest to ogólnie dobry wybór, gdy trzeba przekopać podkatalogi.źródło
Spróbować
rm -rf *?*
. Spowoduje to usunięcie normalnych i ukrytych plików.źródło
*?*
nie będzie pasował do plików / katalogów „kropkowych” (chyba że włączyłeśdotglob
opcję w bash ,GLOB_DOTS
opcję w zsh lub równoważną dla jakiejkolwiek powłoki, której używasz).