7zip: Comment exclure des types de fichiers?

9

Je souhaite exclure les types de fichiers suivants:

  • epub
  • pdf
  • html (majuscule aussi)
  • azw3
  • mobi
  • opf
  • SMS

J'ai ceci jusqu'à présent qui ne semble pas fonctionner, je reçois une erreur disant "ligne de commande incorrecte".

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

J'ai également essayé la commande ci-dessus sans guillemets doubles.

J'ai créé la commande ci-dessus en utilisant les informations d' ici (pour Windows) mais cela ne semble pas fonctionner sous Linux.

daka
la source

Réponses:

10

7zn'accepte qu'une seule archive dans ses arguments, mais vous passez un caractère générique qui s'étend au contenu complet du répertoire de travail actuel; Un autre problème est que les caractères génériques dans les arguments se développeront également, s'ils ne sont pas cités ou entre guillemets.

Vous ne devez donc extraire qu'une seule archive par commande; vous devez supprimer le caractère générique à la fin, spécifier une seule archive et citer les arguments:

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

Pour extraire plusieurs archives à la fois, vous pouvez utiliser plusieurs méthodes:

  • 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
la source
J'ai beaucoup d'archives qui doivent être extraites, d'où l'utilisation du caractère générique à la fin pour extraire TOUTES les archives.
daka
@sudoman Êtes-vous sûr que cela est pris en charge par 7z? Vous voulez essayer avec une seule archive?
kos
Testé, il s'avère que 7zip ne permet pas réellement l'utilisation d'un caractère générique pour sélectionner plusieurs fichiers dans un répertoire donné.
daka
@Ron Je suis d'accord, mais le problème ici est que OP ne peut pas extraire plusieurs archives à la fois; mais a voté pour votre article
kos
@sudoman J'ai trouvé un autre défaut dans votre commande d'origine, et j'ai ajouté quelques moyens d'extraire plusieurs archives à la fois
kos
10

De man 7z:

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

Pour exclure un fichier (ou des types), vous pouvez utiliser la commande suivante:

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

Remarquez -xrau lieu de -x. Le rindique récursif afin qu'il puisse faire correspondre les fichiers exclus dans les hiérarchies de dossiers approfondies

Le fichier exclude.txtest une liste séparée par des retours chariot comme ceci:

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

Si vous souhaitez exclure le répertoire complet (vous pouvez avoir ce fichier d'extension séparé dans le répertoire)

 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' 

Ici, le répertoire des fournisseurs , des vues et des documents a été exclu.

manish1706
la source
1
Pourquoi sudo? Et qu'est-ce que cela ajoute aux réponses existantes?
muru