Wiem, że to usunie wszystko w podkatalogu i poniżej:
rm -rf <subdir-name>
Ale jak usunąć wszystko w bieżącym katalogu, a także każdy podkatalog pod nim oraz zawartość wszystkich tych podkatalogów?
Wiem, że to usunie wszystko w podkatalogu i poniżej:
rm -rf <subdir-name>
Ale jak usunąć wszystko w bieżącym katalogu, a także każdy podkatalog pod nim oraz zawartość wszystkich tych podkatalogów?
Odpowiedzi:
Ćwicz bezpieczną obsługę komputera. Po prostu przejdź o jeden poziom wyżej w hierarchii i nie używaj wyrażeń wieloznacznych:
Dwie kreski
--
powiedziećrm
, że<dir-to-remove>
nie jest to opcja wiersza polecenia, nawet jeśli zaczyna się od myślnika.źródło
rm ./
możesz przypadkowo wpisać,rm . /
co może być katastrofą.Usunie wszystkie pliki / katalogi poniżej bieżącego.
Jeśli chcesz zrobić to samo z innym katalogiem, którego nazwę masz, możesz go po prostu nazwać
Jeśli chcesz usunąć nie tylko jego podkatalogi i pliki, ale także sam katalog, pomiń
-mindepth 1
. Zrób to bez,-delete
aby uzyskać listę rzeczy, które zostaną usunięte.źródło
-mindepth 1
jeśli określasz katalog (find <name-of-directory> -mindepth 1 -delete
). W przeciwnym razie Johannes ma rację, nie usunie bieżącego katalogu roboczego (jeśli jest używanyfind -delete
).find -mindepth 1 -delete
ale mamillegal option -- m
ale działał świetnie, kiedy usunięto opcję mindepthfind . -delete
To, co zawsze robię, to pisanie
a następnie naciśnij ESC- * , a bash rozwinie * do jawnej listy plików i katalogów w bieżącym katalogu roboczym.
Korzyści to:
W rzeczywistości podoba mi się to tak bardzo, że uczyniłem to domyślne zachowanie dla TAB z tym wierszem w .bashrc:
źródło
--
w tej odpowiedzi? Muszę powiedzieć, że to podejście jest niesamowite.Posługiwać się
Aktualizacja:
.
oznacza bieżący katalog, ale nie możemy tego użyć. Wydaje się, że polecenie ma jawne sprawdzenia dla.
i..
. Zamiast tego użyj symboli wieloznacznych. Ale to może być ryzykowne.Bezpieczniejszą wersją IMO jest użycie:
(to monituje o potwierdzenie przed usunięciem każdego pliku / katalogu).
źródło
To prawda, że bezpośrednio
rm –rf .
usunie wszystko w bieżącym, w tym wszelkie podkatalogi i ich zawartość. Pojedyncza kropka (.
) oznacza katalog bieżący. uważaj, aby tego nie robić,rm -rf ..
ponieważ podwójna kropka (..
) oznacza poprzedni katalog.Biorąc to pod uwagę, jeśli jesteś podobny do mnie i masz jednocześnie otwartych wiele okien terminala, lepiej bądź bezpieczny i użyj
rm -ir .
Spójrzmy na argumenty poleceń, aby zrozumieć, dlaczego.Po pierwsze, jeśli spojrzysz na stronę podręcznika
rm
poleceń (man rm
pod większością systemów Unix), zauważysz, że–r
oznacza to „rekurencyjne usuwanie zawartości katalogów”. Zatem zrobienie tego wrm -r .
pojedynkę spowodowałoby usunięcie wszystkiego w bieżącym katalogu i wszystkiego poniżej.W
rm –rf .
dodanym -f oznacza „ignoruj nieistniejące pliki, nigdy nie pytaj”. To polecenie usuwa wszystkie pliki i katalogi w bieżącym katalogu i nigdy nie wyświetla monitu o potwierdzenie, że naprawdę chcesz to zrobić.-f
jest szczególnie niebezpieczne, jeśli uruchomisz polecenie jako użytkownik z uprawnieniami, ponieważ możesz usunąć zawartość dowolnego katalogu bez możliwości upewnienia się, że naprawdę tego chcesz.Na otherhand w że zastępuje środki „prompt przed każdym usunięciu”. Oznacza to, że będziesz miał szansę powiedzieć „oups! Nie o to mi chodzi”, zanim rm z radością usunie wszystkie twoje pliki.
rm -ri .
-i
-f
We wczesnych latach sysadmin zrobiłem
rm -rf /
w systemie będąc zalogowanym z pełnymi uprawnieniami (root). W rezultacie minęły dwa dni na przywrócenie systemu z kopii zapasowych. Dlatego teraz zatrudniamrm -ri
.źródło
Co powiesz na:
źródło
Nie rób tego! To jest niebezpieczne! UPEWNIJ SIĘ, ŻE JESTEŚ W ODPOWIEDNIM KATALOGU!
źródło
upewnij się, że jesteś we właściwym katalogu
źródło
To najprostsze bezpieczne i ogólne rozwiązanie to prawdopodobnie:
źródło
Uważam, że ta odpowiedź jest lepsza:
/unix/12593/how-to-remove-all-the-files-in-a-directory
w zasadzie przechodzisz o jeden poziom w górę, a następnie mówisz usuń wszystko w katalogu X. W ten sposób nadal określasz, który folder powinien mieć usuniętą zawartość, co jest bezpieczniejsze niż zwykłe powiedzenie „usuń wszystko tutaj”, przy jednoczesnym zachowaniu oryginalnego folderu (co czasami chcesz, ponieważ nie możesz lub po prostu nie chcesz aby zmodyfikować istniejące uprawnienia folderu)
źródło