Usunąć wszystkie foldery i pliki pod nim w systemie Linux o określonej nazwie?

5

Mam następującą strukturę:

/.svn
/bla/.svn
/hello/.svn
/bla/bla/bla/.svn
... etc

Chcę usunąć wszystkie foldery .svn. Jak mam to zrobić?

To nie jest:

rm -rf .svn

W systemie Windows używasz wyzwalacza / s. Jak to robisz Linux?

coderama
źródło

Odpowiedzi:

11

Użyj polecenia find:

find . -type d -name .svn -exec rm -rf {} \;

{} to nazwa pliku, -type d oznacza katalogi.

Ostrzeżenie: używaj find i rm razem z ostrożnością!

Peter Jaric
źródło
+1 za ostrzeżenie, znajdź i rm jest potencjalnie bardzo niebezpieczną kombinacją.
Dom
1
Wypełni twój terminal wieloma ostrzeżeniami o „find: '... /. Svn': Brak takiego pliku lub katalogu”. Katalogi zostaną usunięte, ale możesz uniknąć ostrzeżeń za pomocą -depth(patrz moja odpowiedź).
DevSolar
9
find . -depth -type d -name .svn -exec rm -rf {} \;

Różnice w stosunku do innych przedstawionych już rozwiązań:

  • bez -depthpolecenia polecenie spróbuje ponownie przejść do katalogu .svn po jego usunięciu, co spowoduje pojawienie się komunikatów o błędach.

  • bez -type d(co ogranicza wyszukiwanie do katalogów), usuwasz również pliki o podanej nazwie. (Najprawdopodobniej nie będziesz ich mieć, ale nie powinieneś ryzykować, robiąc kombinację „znajdź” i „rm”.)

DevSolar
źródło
Podczas gdy twój dodatek -depth jest bardzo dobry (+1 ode mnie), w swoim rozwiązaniu miałem opcję -type d.
Peter Jaric
5

Jeśli twoją dokładną potrzebą jest usunięcie .svnkatalogów, a nie bardziej ogólne rozwiązanie do usuwania katalogów o określonych nazwach, powinieneś rozważyć użycie svn export :

$ svn export . /tmp/new-dir

Spowoduje to utworzenie kopii obszaru roboczego svn w bieżącym katalogu do nowego katalogu pod adresem /tmp/new-dir. Nie musisz najpierw tworzyć nowego katalogu. Subversion zajmie się tym za Ciebie.

Doug Harris
źródło
2
find . -name .svn -exec rm -rf {}\;

Powinien działać dla ciebie.
Najpierw znajduje wszystkie foldery o nazwie .svn Następnie wykonuje rm -rfdla każdego znalezionego folderu.

Wynik:
Nigdy więcej folderów .svn

S.Hoekstra
źródło
znajdź: brakujący argument dla `-exec '
Dennis Williamson
Tak się dzieje, gdy wcześniej zapomnisz o przestrzeni \;.
DevSolar