jak sprawić, by „znajdź” nie zwracało bieżącego katalogu


11

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:


14

findzwraca ścieżkę katalogu głównego, ponieważ pasuje do twoich kryteriów - tzn. jest katalogiem i nie zaczyna się od _.

-mindepth 1Podejrzewam, że szukasz :

$ cd /tmp
$ mkdir a
$ touch a/b
$ mkdir a/c
$ touch a/c/d
$ find a
a
a/b
a/c
a/c/d
$ find a -mindepth 1
a/b
a/c
a/c/d

Odnośnik: znajdź stronę podręcznika


Świetny! działa tak, jak chciałem. Dodałem! -nazwa „pliki”, ale dla mnie to źle ...
Pinpin

0

Zmień z:

find /source/path/with/directories ...

do:

(shopt -s dotglob; find /source/path/with/directories/* ... )

Ten sposób /source/path/with/directoriesnie zostanie uwzględniony.

shopt -s dotglobJest 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ć efekt shopttylko w podpowłoce, w przeciwnym razie trzeba by ją później cofnąć shopt -u dotglob.


To się nie powiedzie dla pozycji katalogu zaczynających się od .. Nie próbuj .*też, albo dopasujesz całą masę innych rzeczy, których nigdy nie zamierzałeś. ;-)
zigg

Dobra uwaga, zaktualizowano odpowiedź, dodano za pomocą shopt.
janos,
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.