Polecenie usunięcia wszystkich plików i folderów rekurencyjnie, w tym ukrytych, na terminalu MAC OS?

11

rm -rf * usunie wszystkie pliki i foldery, ale nie ukryte.

rm -rf .* usunie wszystkie ukryte pliki i foldery, ale nie te, które nie są ukryte, prawda?

Jakie polecenie należy wpisać, aby usunąć wszystkie pliki i foldery, w tym ukryte? (oprócz. i ..); ?

MEM
źródło

Odpowiedzi:

13
rm -rf * .*

da rade.

użytkownik1055604
źródło
1
NIE! .*rozwinie się do wszystkich niewidocznych wpisów w bieżącym katalogu, w tym .. - co oznacza, że ​​użycie .*jako argumentu rm -rfspowoduje próbę usunięcia katalogu powyżej tego, w którym aktualnie się znajdujesz, oraz całej jego zawartości . rm odmówi, ale nie sądzę, aby polegać na tym sejfie ...
Gordon Davisson
@Gordon Davisson: Utworzyłem katalog. Dodałem do niego pliki, w tym pliki ukryte. Wydałem to polecenie. Rekurencyjnie usunął całą zawartość tego katalogu i nie usunął żadnej zawartości POWYŻEJ tego katalogu. Czy możesz wyjaśnić swój komentarz?
MEM,
Dziękujemy za wyjaśnienie powyższego komentarza. Teraz rozumiem twój punkt widzenia. Jakieś alternatywne sugestie?
MEM
co powiesz na używanie findz -deleteflagą ...
user1055604
1
@GordonDavisson rmpowinien rm: "." and ".." may not be removedw takim przypadku wydrukować komunikat - nie usunie automatycznie katalogu nadrzędnego.
slhck
1

Spróbuj tego:

find . -mindepth 1 -delete

Nie jestem pewien, czy -mindepthsą obsługiwane przez wszystkie implementacje find; jeśli twój go nie ma, -pathpowinien dać inny sposób, aby powstrzymać go przed próbą usunięcia .:

find . -path "*/*" -delete
Gordon Davisson
źródło
BSD też findma tę opcję, tak.
slhck
1

Wystarczy użyć tego polecenia, aby wyczyścić pliki / katalogi według określonych kryteriów:

# tmpwatch -fauv 0 .
Antoine Nguyen
źródło
0

shopt -s dotglobpowoduje także *dołączanie plików rozpoczynających się kropką.

Lri
źródło