Obecnie próbuję find
(i kopiuję) wszystkie pliki i strukturę folderów pasujące do określonego wzorca w określonym katalogu i jestem już prawie na miejscu!
W szczególności chcę rekurencyjnie skopiować wszystkie foldery, które nie rozpoczynają się znakiem „_” z określonej ścieżki.
find /source/path/with/directories -maxdepth 1 -type d ! -name _\* -exec cp -R {} /destination/path \;
W katalogu / source / path / with / directories / path znajdują się katalogi specyficzne dla komputera, zaczynające się od „_” i innych, a ja jestem zainteresowany tylko kopiowaniem innych. Z innego powodu, polecenie find zwraca katalog / source / path / with / directories /, a zatem kopiuje jego zawartość, włączając w to katalogi zaczynające się na „_”.
Czy ktoś ma podpowiedź, dlaczego tak jest?
Dzięki,
Pascal
Odpowiedzi:
find
zwraca ścieżkę katalogu głównego, ponieważ pasuje do twoich kryteriów - tzn. jest katalogiem i nie zaczyna się od_
.-mindepth 1
Podejrzewam, że szukasz :Odnośnik: znajdź stronę podręcznika
źródło
Zmień z:
do:
Ten sposób
/source/path/with/directories
nie zostanie uwzględniony.shopt -s dotglob
Jest tak, że*
będzie też dopasować pliki i katalogi zaczynające się na literę A.
(ukryte pliki, katalogi).Całość jest owinięta w podpowłokę,
(...)
aby ograniczyć efektshopt
tylko w podpowłoce, w przeciwnym razie trzeba by ją później cofnąćshopt -u dotglob
.źródło
.
. Nie próbuj.*
też, albo dopasujesz całą masę innych rzeczy, których nigdy nie zamierzałeś. ;-)shopt
.