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)
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.)
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.
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.
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").
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
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...
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