Pertanyaan Bagaimana cara tar.gz semuanya kecuali .jpg / gif / png / wmv / flv / tar.gz / zip?


bagaimana saya tar.gz semuanya terpisah dari jpg/gif/png/wmv/flv/zips, secara rekursif, melalui shell Unix?


4
2017-12-10 00:43


asal




Jawaban:


Menggunakan --exclude pilihan:

tar czvf myarchive.tar.gz --exclude=\*.{jpg,gif,png,wmv,flv,tar.gz,zip} rootdir

5
2017-12-10 00:59



Pastikan saja Anda menjalankan gnu tar, jika tidak bendera ini tidak akan ada. Pada solaris Anda dapat menentukan file pengecualian. - Darren Hall


find -type f -a ! \( \
                     -name '*.jpg' -o \
                     -name '*.gif' -o \
                     -name '*.png' -o \
                     -name '*.wmv' -o \
                     -name '*.flv' -o \
                     -name '*.tar.gz' -o \
                     -name '*.zip' \) \
 | xargs tar rvfz files.tgz

Saya menggunakan multilple lines untuk membuatnya lebih mudah untuk diedit nanti jika Anda membuat ini menjadi shell script atau fungsi shell.

Saya menggunakan tanda -r untuk tar jika jumlah file melebihi 1 panggilan ke xargs. Dengan cara ini Anda tidak dapat melebihi buffer argumen untuk tar.


2
2017-12-10 00:58






  find ./ -type f | egrep -v "\.(jpg|gif|png|wmv|flz|zips)$" | xargs tar -czf filename.tgz

2
2017-12-10 00:57



Anda mungkin memiliki kesalahan ketik dengan "ritsleting", jadi editlah sesuai - Kevin Lochner
Apakah Anda ingin menjadi $ pada akhirnya di sana? Apakah egrep Anda tidak akan menyaring jpg.txt? - Suppressingfire
tar (c) reate + xargs dapat berbahaya jika panjang arg Anda cukup panjang sehingga tar dipanggil dua kali. - Darren Hall