Jak usunąć niepusty katalog w Terminalu?

630

Jak usunąć następujący katalog?

Wpisałem:

rmdir lampp

Pojawia się ten błąd:

rmdir: failed to remove `lampp': Directory not empty

Czy istnieje polecenie, aby usunąć wszystkie pliki w katalogu i usunąć folder katalogu?

naveen
źródło
1
Nie mogę usunąć katalogu takiego jak „Nowy folder” za pomocą wszystkich powyższych szczegółowych poleceń. Jest podwójnie sformułowany. Ale chcę usunąć ten katalog. Wszelkie sugestie będą mile widziane. T.Divakara, Bengaluru, Indie
Jest to puste miejsce w nazwie pliku, spróbuj użyć „cudzysłowów”> rmdir „Nowy folder” <, a następnie folder zniknie lub użyj znaków zmiany znaczenia dla niedopuszczalnych znaków.
Ken Mollerup
2
Wystarczy robić rm -r lampp.
John Strood

Odpowiedzi:

876

Użyj poniższego polecenia:

rm -rf lampp

Usuwa wszystkie pliki i foldery zawarte w lamppkatalogu.

W przypadku, gdy użytkownik nie ma uprawnień do usunięcia folderu:

Dodaj sudona początku polecenia:

sudo rm -rf folderName

W przeciwnym razie bez sudoCiebie nie zostanie zwrócone pozwolenie. Dobrą praktyką jest nieużywanie -fpodczas usuwania katalogu:

sudo rm -r folderName

Uwaga: przy założeniu, że jesteś już na tym samym poziomie folderu, który chcesz usunąć w terminalu, jeśli nie:

sudo rm -r /path/to/folderName

FYI: można używać liter -f, -r, -v:

  • -f = aby zignorować nieistniejące pliki, nigdy nie pytaj
  • -r = rekursywne usuwanie katalogów i ich zawartości
  • -v = wyjaśnić, co się dzieje
Shantanu Banerjee
źródło
69
Moim skromnym zdaniem, dobrą praktyką jest, aby nigdy nie dodawać litery „f” przy pierwszej próbie. Jego celem jest zignorowanie niektórych ostrzeżeń, które mogą być ważne, szczególnie jeśli przypadkowo zrobiłeś to w / z niewłaściwego katalogu. Moim zdaniem dobrze jest wypróbować najpierw bez „f”, a potem tylko wtedy, gdy napotykasz wiele ostrzeżeń i jesteś pewien, że możesz je zignorować, Ctrl + C i powtórz polecenie za pomocą „ fa".
thomasrutter
@BKSpurgeon nie, chyba że przypadkowo --no-preserve-rootteż wpiszesz .
muru
@thomasrutter ... Zgadzam się. Plik „xxx” właściciel: root i grupa: root można usunąć za pomocą przełącznika -f ; i bez sudo . To jest komunikat bez opcji -f : " rm: usuń zwykły plik chroniony przed zapisem /home/william/.cache/netbeans/v08.01/tmp/xxx '? _". _Przejdź delikatnie.
będzie
95
rm -R lampp

Trzeba jednak uważać na takie rekurencyjne polecenie, ponieważ łatwo jest przypadkowo usunąć znacznie więcej, niż zamierzano.

Przed naciśnięciem Enter warto zawsze dokładnie sprawdzić, w którym katalogu się znajdujesz i czy poprawnie wpisałeś polecenie.

Bezpieczniejsza wersja

rm -R -i lampp

Dodanie -isprawia, że ​​jest to trochę bezpieczniejsze, ponieważ będzie monitowało o każdym usunięciu. Jednak jeśli usuwasz wiele plików, nie będzie to bardzo praktyczne. Mimo to możesz najpierw spróbować.

Uwaga na temat -f opcji:

Wiele osób sugeruje używanie -f(łączenie go w -Rflub -rf), twierdząc, że pozbywa się irytujących podpowiedzi. Jednak w normalnych przypadkach nie trzeba go i używając go tłumi pewne problemy, które prawdopodobnie nie chcesz wiedzieć. Kiedy go użyjesz, nie zostaniesz ostrzeżony, jeśli twoje argumenty dostarczą nieistniejący katalog lub pliki: rm po prostu po cichu nie usunie niczego. Zasadniczo spróbuj najpierw bez -f: jeśli masz problemy z argumentami, zauważysz. Jeśli zaczniesz otrzymywać zbyt wiele monitów o pliki bez dostępu do zapisu, możesz spróbować-f. Możesz też uruchomić polecenie użytkownika (lub administratora korzystającego z sudo), który ma pełne uprawnienia do usuwanych plików i katalogów, aby w pierwszej kolejności zapobiec wyświetlaniu tych monitów.

thomasrutter
źródło
4
Uwaga: -rmożna również użyć małych liter i ma ten sam efekt tutaj. Zwykle używam tylko wielkich liter, -Rponieważ są one zgodne z innymi używanymi przeze mnie poleceniami, takimi jak grepi chmod, z których niektóre obsługują tylko wielkie litery.
thomasrutter
Ten działał dla mnie za pomocą adb (most debugowania Androida) na Androida. Próbowałem rm -rf, ale to nie zadziałało. Musiałem użyć rm -R. Dzięki.
raddevus,
To dobre rozwiązanie, zwłaszcza jeśli nie masz doświadczenia w korzystaniu z terminala Bash. Polecenie można skrócić do rm -ir FOLDER.
AlainD
24

Istnieje wiele sposobów na usunięcie katalogu w trybie CLI. To zależy od tego, w jaki sposób czujesz się komfortowo.

rm -rvf /path/to/directory  
  • -r = rekurencyjnie usuń katalogi i ich zawartość
  • -v = wyjaśnij, co się dzieje
  • -f = zignoruj ​​nieistniejące pliki, nigdy nie pytaj

Jeśli jesteś nowy w Linuksie, użyj stron man poleceń ( man rm), aby uzyskać więcej opcji i większą dokładność.

papseddy
źródło
-2

Miałem dzisiaj z tym problem, ale przezwyciężyłem to dzięki sudo.

Ostrzeżenie: upewnij się, że chcesz usunąć całą rzecz przed użyciem poniższego polecenia.

$ sudo rm -R [Directory name]

Udało mi się to dzisiaj i usunąłem wiele niepustych katalogów, które potwierdziłem, że nie chcę / potrzebuję.

Używam 14.04 LTS

Tomasz
źródło
4
„SUDO” nie jest poleceniem - „sudo” to. Niemniej jednak nie używasz sudo do usuwania niepustego katalogu, używasz go do usunięcia pliku, który nie jest Twoją własnością. Jest to oczywiście niebezpieczne i niezbyt mądre, ponieważ nie powinieneś ślepo usuwać plików, których nie posiadasz.
Marty Fried
-3

Nawiasem mówiąc, osobiście chciałem usunąć katalog zawierający plik / pliki chronione przed zapisem (.git i podkatalogi) i ostatecznie zdałem sobie sprawę, że muszę również zostać superużytkownikiem, aby pomyślnie usunąć te pliki. Oto co zrobiłem:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/
Harvey Williams
źródło
4
Nie sądzę, że potrzebujesz sudo sututaj. Po prostu prefiks rmpolecenia sudo. Ze względów bezpieczeństwa dobrą praktyką (według zwolenników sudo) jest nie pozostawanie w wierszu polecenia root, gdy nie jest to konieczne.
thomasrutter
2
Ponadto, bądź bardzo, bardzo bardzo pewny, w którym katalogu jesteś sudo rm -r.
Tony Martin
Możesz wykonać polecenie root-relative ( /directory_name), aby nie było wątpliwości co do tego, który katalog usuwasz.
Yaakov Ainspan