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.

Odpowiedzi:


11

Zamiast tego usuń zawartość folderu.

rm -r MYFOLDER/*

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

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

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

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

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.