Bagaimana cara saya menyalin secara rekursif cp -rf *
, tetapi mengecualikan direktori tersembunyi (direktori dimulai dengan.) Dan isinya?
sumber
Bagaimana cara saya menyalin secara rekursif cp -rf *
, tetapi mengecualikan direktori tersembunyi (direktori dimulai dengan.) Dan isinya?
Anda bisa menyalin semuanya dengan
cp -rf
lalu hapus direktori tersembunyi di tujuan dengan
find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf
Atau, jika Anda memiliki beberapa tar canggih (misalnya tar GNU), Anda bisa mencoba menggunakan tar untuk mengecualikan beberapa pola. Tapi saya khawatir tidak mungkin hanya mengecualikan direktori tersembunyi, tetapi juga menyertakan file tersembunyi.
Misalnya sesuatu seperti ini:
tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x
Btw, GNU tar memiliki kebun binatang opsi gaya kecualikan. Favorit saya adalah
--exclude-vcs
Pilihan yang baik untuk menyalin pohon direktori kecuali untuk beberapa file adalah:
rsync : ini pada dasarnya adalah cp plus satu ton kemungkinan pengecualian.
rsync -a --exclude='.*' /source/ /destination
pax : ia memiliki beberapa kemampuan pengecualian, dan itu dalam POSIX jadi harus tersedia di mana-mana (kecuali bahwa beberapa distribusi Linux tidak memasukkannya dalam instalasi default mereka untuk beberapa alasan).
cd /source && mkdir -p /destination && \
pax -rw -pp -s '!.*/\..*!!' . /destination
atau cp
Anda dapat menggunakan rsync
dengan --exclude=PATTERN
.