7zip: Bagaimana cara mengecualikan jenis file?

9

Saya ingin mengecualikan jenis file berikut:

  • Epub
  • pdf
  • html (huruf besar juga)
  • azw3
  • mobi
  • opf
  • txt

Saya punya ini sejauh ini yang tampaknya tidak berhasil, saya mendapatkan pesan kesalahan "Baris Perintah Salah".

7z e "-x!*.epub" "-x!*.pdf" "-x!*.html" "-x!*.azw3" "-x!*.mobi" "-x!*.txt" "-x!*.HTML" "-x!*.opf" *

Saya juga mencoba perintah di atas tanpa tanda kutip ganda.

Saya membuat perintah di atas menggunakan info dari sini (untuk windows) tetapi sepertinya tidak berfungsi di Linux.

daka
sumber

Jawaban:

10

7zhanya menerima arsip tunggal dalam argumennya, tetapi Anda memberikan wildcard yang diperluas ke konten lengkap direktori kerja saat ini; Masalah lain adalah bahwa wildcard dalam argumen akan berkembang juga, baik jika tidak dikutip atau dikutip ganda.

Jadi, Anda hanya perlu mengekstrak arsip tunggal per perintah; Anda harus menghapus wildcard di bagian akhir, tentukan satu arsip dan kutip-tunggal argumen:

7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' archive.7z

Untuk mengekstrak banyak arsip sekaligus, Anda dapat menggunakan beberapa metode:

  • bash:
for archive in *.7z; do 7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' "$archive"; done
  • find:
find . -maxdepth 1 -type f -iname "*.7z" -exec 7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' {} \;
kos
sumber
Saya memiliki banyak arsip yang perlu diekstraksi, karenanya penggunaan wildcard pada akhirnya untuk mengekstrak SEMUA arsip.
daka
@sudoman Apakah Anda yakin ini didukung oleh 7z? Pikiran untuk mencoba dengan arsip tunggal?
kos
Diuji, ternyata 7zip tidak benar-benar memungkinkan penggunaan wildcard untuk memilih beberapa file dalam direktori yang diberikan.
daka
@ Aku setuju, tapi masalahnya di sini adalah OP tidak bisa mengekstraksi banyak arsip sekaligus; Namun upvoted posting Anda
kos
@sudoman Saya telah menemukan kesalahan lain dalam perintah asli Anda, ditambah saya menambahkan beberapa cara untuk mengekstrak beberapa arsip sekaligus
kos
10

Dari man 7z:

-x[r[-|0]]]{@listfile|!wildcard}
              Exclude filenames

Untuk mengecualikan file (atau jenis) Anda dapat menggunakan perintah berikut:

7z a [email protected] backup.7z /whatever/dirs/or/files

Perhatikan -xrbukan -x. Ini rmenunjukkan rekursif sehingga dapat mencocokkan file yang dikecualikan dalam hierarki folder yang dalam

File exclude.txtadalah daftar yang dipisahkan oleh carriage return seperti ini:

*.epub
*.pdf
*.html 
*.HTML
*.azw3
*.mobi
*.opf
*.txt
Ron
sumber
-2

Jika Anda ingin mengecualikan direktori lengkap (Anda mungkin memiliki file ekstensi ini dipisahkan dalam direktori)

 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on ~/bkpFile_$(date +"%d_%b_%Y").1.7z /home/ubuntu/projectfile -mx0 '-xr!vendor' '-xr!view' '-xr!documents' 

Di sini, vendor , view , dan direktori dokumen telah dikecualikan.

manish1706
sumber
1
Mengapa sudo? Dan apa yang ini tambahkan ke jawaban yang ada?
muru