kopiuj rekurencyjnie oprócz ukrytego katalogu


13

Jak kopiować rekurencyjnie cp -rf *, ale wykluczając ukryte katalogi (katalogi zaczynające się od.) I ich zawartość?

Odpowiedzi:


6

Możesz po prostu skopiować wszystko

cp -rf 

a następnie usuń ukryte katalogi w miejscu docelowym za pomocą

find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf

Alternatywnie, jeśli masz zaawansowaną tar (np. GNU tar), możesz spróbować użyć tar, aby wykluczyć niektóre wzorce. Obawiam się jednak, że nie można wykluczyć tylko ukrytych katalogów, ale także ukryte pliki.

Na przykład coś takiego:

tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x

Btw, GNU tar ma zoo wykluczających opcje stylu. Moim ulubionym jest

--exclude-vcs

30

Dobre opcje kopiowania drzewa katalogów, z wyjątkiem niektórych plików, to:

  • rsync : jest to w zasadzie cp plus mnóstwo możliwości wykluczenia.

    rsync -a --exclude='.*' /source/ /destination
    
  • pax : ma pewne możliwości wykluczania i jest w POSIX, więc powinien być dostępny wszędzie (poza tym, że niektóre dystrybucje Linuksa z jakiegoś powodu nie uwzględniają go w domyślnej instalacji).

    cd /source && mkdir -p /destination && \
    pax -rw -pp -s '!.*/\..*!!'  . /destination
    

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.