salin secara rekursif kecuali direktori tersembunyi


13

Bagaimana cara saya menyalin secara rekursif cp -rf *, tetapi mengecualikan direktori tersembunyi (direktori dimulai dengan.) Dan isinya?

Jawaban:


6

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

30

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
    

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.