Jak usunąć zawartość katalogu w Centos

9

Muszę usunąć całą zawartość folderu w CentOS, ale nie sam folder.

Na przykład: Mam folder o nazwie „MYFOLDER”, który zawiera podfoldery FOLD_1, FOLD_2, FOLD_3, FOLD_4 ... itd. Oraz niektóre pliki. Muszę usunąć wszystkie te foldery i pliki, ale nie folder kontenerów MYFOLDER. Potrzebuję tego katalogu do kierowania wynikami poprzedniego procesu.

Próbowałem z rm -rf poleceniem, ale to również usuwa folder kontenera.

verofairy
źródło

Odpowiedzi:

11

Zamiast tego usuń zawartość folderu.

rm -r MYFOLDER/*
Ignacio Vazquez-Abrams
źródło
1
Zauważ, że to nie ma ukrytych plików / katalogów w myfolder
tylerl
1
@tylerl: Działa, jeśli ustawisz shopt -s dotglobpierwszy.
jgoldschrafe
Wymaga to ręcznego zatwierdzenia r / n schodzenia do każdego podkatalogu, co jest całkowitą stratą czasu. Prawidłowe polecenie obsłuży to wszystko automatycznie, więc nie utkniesz z 50 monitami.
CodeMed
rm -R /path/to/myfolder/*jest poprawną składnią, aby uniknąć nadmiernego żądania zatwierdzenia usunięcia każdego pliku i podfolderu. Zwróć uwagę na stolicę R.
CodeMed
5

Możesz użyć:

rm -r MYFOLDER/{.[^.],.??*}

Spowoduje to również usunięcie ukrytych plików i folderów. Jeśli masz zbyt wiele plików w katalogu MYFOLDER, powinieneś zamiast tego uruchomić:

ls MYFOLDER/{.[^.],.??*}|xargs rm -r
Mircea Vutcovici
źródło
Mam ponad 500k plików w moim meta/katalogu, więc chciałem wypróbować alternatywę xargs, jednak otrzymuję te komunikaty o błędach: ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK
1
Upewnij się, że używasz bashpowłoki. Powłoka musi obsługiwać „Rozwinięcie nawiasu klamrowego” i „Wyrażenia regularne” dla wzorców plików.
Mircea Vutcovici,
3

Moim zdaniem najłatwiejszym sposobem jest usunięcie całego katalogu, w tym samego siebie, a następnie odtworzenie folderu. Są sytuacje, w których nie jest to dobre rozwiązanie (takie jak nienadzorowane skrypty lub bardziej złożone potoki), ale nie określono, dlaczego nie chcesz usunąć folderu.

rm -rf foldername
mkdir foldername

Ups Podałeś (ponownie przeczytałem twój post). Cóż, nadal usuwanie i odtwarzanie może działać. Zwłaszcza jeśli łączysz polecenia razem, na przykład

rm -rf foldername && mkdir foldername

Lub

rm -rf foldername; mkdir foldername
JDS
źródło
Czasami nie masz uprawnień w folderze nadrzędnym lub chcesz zachować określone atrybuty, których nie znasz. Np. Nie możesz usunąć swojego katalogu domowego jako użytkownik inny niż root, ale możesz usunąć z niego wszystko.
Mircea Vutcovici
To powinna być zaakceptowana odpowiedź. +1
CodeMed
0

Co powiesz na

cd MYFOLDER
find . | rm -rf

Usuwa to również ukryte pliki (te zaczynające się od kropki).

Janne Pikkarainen
źródło
1
Spowoduje to również usunięcie MYFOLDER.
Mircea Vutcovici
0

Spróbuj rm -r -f filenamewspółpracować z CentOS 6.x

Shiv Singh
źródło
0

Zdecydowanie polecam tę alternatywę (usuwa również pliki ze spacjami w nazwach):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
Andres SK
źródło