Jak kopiować rekurencyjnie cp -rf *
, ale wykluczając ukryte katalogi (katalogi zaczynające się od.) I ich zawartość?
źródło
Jak kopiować rekurencyjnie cp -rf *
, ale wykluczając ukryte katalogi (katalogi zaczynające się od.) I ich zawartość?
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
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
alternatywnie cp
możesz użyć rsync
z --exclude=PATTERN
.