Wiersz poleceń do rekurencyjnego usuwania pasujących plików i katalogów

Jak mogę rekurencyjnie usunąć wszystkie pliki i katalogi, które pasują do określonego wzorca? np. usuń wszystkie".svn" katalogi i pliki, które zawierają?

(niestety tylko DOS)

Author: Rory, 2009-02-11

6 answers

Ponieważ szukasz rozwiązania DOS, w zeszłym tygodniu post był prawie identyczny i konsensus był:

Narzędzie wiersza poleceń do usuwania folderu o podanej nazwie rekurencyjnie w systemie Windows?

Dla / d / r . %d w (.svn) do @if exist "%d "rd / S / q" % d "

LUB

For / f "usebackq" %D in ("dir .svn / ad / b / s") do rd / S / q "% d "

W rzeczywistości, SVN daje również możliwość eksportu katalogu roboczego bez .svn / _svn katalogi.

Afterthoughts, three years later: Myślę, że powodem, dla którego ludzie muszą rekurencyjnie usuwać .foldery svn/_svn są spowodowane tym, że bezpośrednio skopiowały lokalną kopię roboczą do nowej lokalizacji w celu porównania ich zmodyfikowanej wersji z czystym eksportem, tzn. gdy coś pójdzie nie tak ze zmodyfikowaną lokalną kopią roboczą. (Przynajmniej dlatego go potrzebowałem. Zdecydowanie łatwiej/szybciej jest po prostu użyć "svn export", gdy jest możliwe.)

 56
Author: JMD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:44:58

To Unix czy Windows? W systemie Unix łatwym rozwiązaniem jest

find . -name '.svn' -type d | xargs rm -rf

Przeszukuje rekurencyjnie wszystkie katalogi (- type d) w hierarchii zaczynając od "."(current directory) i znajduje tych, których nazwa to '.svn'; lista znalezionych katalogów jest następnie przekazywana do rm-rf w celu usunięcia.

Jeśli chcesz spróbować, spróbuj

find . -name '.svn' -type d | xargs echo

To powinno dostarczyć listę wszystkich katalogów, które zostałyby usunięte rekurencyjnie.

 18
Author: Antti Huima,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-10 23:43:59

Jeśli Twoje pliki są w subversion, to wykonanie eksportu z repozytorium da ci drzewo katalogów z .pliki svn i wszelkie inne cruft usunięte.

 7
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-10 23:47:11

Coś takiego może zadziałać, ale oczywiście uważaj z tym!

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

Spróbuj najpierw coś takiego zrobić na sucho:

find . -name ".*" -exec echo {} \;

Należy zauważyć, że puste klamry są wypełniane nazwami plików, a średnik z klauzulą ucieczki kończy polecenie, które jest wykonywane (zaczynając od "-exec").

 6
Author: dreeves,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-10 23:42:43

On * Nix lub Cygwin:

find -name .svn -print0 | xargs -0 rm -rf
 5
Author: greyfade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-10 23:41:31

Jeśli chcesz skopiować go bez eksportowania i eliminowania .svn z projektów, można użyć opcji / EXCLUDE z XCOPY.

TAK:

xcopy /S/Q/EXCLUDE:svn.excludelist [path_from] [path_to\]

Obserwuj " \ " (ukośnik wsteczny) na [path_to]. Określa, że jest to katalog wyjściowy, więc xcopy nie będzie kwestionować, czy jest to plik czy katalog.

Svn.excludelist jest plikiem tekstowym zawierającym wzorce do zignorowania przy kopiowaniu oddzielone linią.

Na Przykład:

.svn
.svn\
\.svn\
.obj
.o
.lib
\src\

I tak dalej...

 1
Author: emanuelcds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-08 13:18:29