7zip: Wie schließe ich Dateitypen aus?

9

Ich möchte die folgenden Dateitypen ausschließen:

  • epub
  • pdf
  • html (auch in Großbuchstaben)
  • azw3
  • mobi
  • opf
  • TXT

Ich habe dies bisher, was nicht zu funktionieren scheint. Ich erhalte die Fehlermeldung "Falsche Befehlszeile".

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

Ich habe auch den obigen Befehl ohne doppelte Anführungszeichen ausprobiert.

Ich habe den obigen Befehl mit Informationen von hier (für Windows) erstellt, aber er scheint unter Linux nicht zu funktionieren.

Daka
quelle

Antworten:

10

7zAkzeptiert nur ein einzelnes Archiv innerhalb seiner Argumente, aber Sie übergeben einen Platzhalter, der den gesamten Inhalt des aktuellen Arbeitsverzeichnisses erweitert. Ein weiteres Problem ist, dass auch die Platzhalter in den Argumenten erweitert werden, entweder ohne oder mit doppelten Anführungszeichen.

Sie sollten also nur ein einziges Archiv pro Befehl extrahieren. Sie sollten den Platzhalter am Ende entfernen, ein einzelnes Archiv angeben und die Argumente in einfache Anführungszeichen setzen:

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

Um mehrere Archive gleichzeitig zu extrahieren, können Sie jedoch mehrere Methoden verwenden:

  • 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
quelle
Ich habe viele Archive, die extrahiert werden müssen, daher die Verwendung des Platzhalters am Ende, um ALLE Archive zu extrahieren.
Daka
@sudoman Bist du sicher, dass dies von unterstützt wird 7z? Möchten Sie es mit einem einzigen Archiv versuchen?
Kos
Getestet stellt sich heraus, dass 7zip die Verwendung eines Platzhalters zur Auswahl mehrerer Dateien in einem bestimmten Verzeichnis nicht zulässt.
Daka
@ Ron Ich stimme zu, aber das Problem hier ist, dass OP nicht mehrere Archive gleichzeitig extrahieren kann; Allerdings hat Ihr Beitrag
kos
@sudoman Ich habe einen weiteren Fehler in Ihrem ursprünglichen Befehl gefunden, und ich habe ein paar Möglichkeiten hinzugefügt, um mehrere Archive gleichzeitig zu extrahieren
kos
10

Von man 7z:

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

Um Dateien (oder Typen) auszuschließen, können Sie den folgenden Befehl verwenden:

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

Beachten Sie -xrstatt -x. Das rzeigt rekursiv an, damit ausgeschlossene Dateien in tiefen Ordnerhierarchien abgeglichen werden können

Die Datei exclude.txtist eine Liste, die durch folgende Zeilenumbrüche getrennt ist:

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

Wenn Sie das vollständige Verzeichnis ausschließen möchten (diese Erweiterungsdatei ist möglicherweise im Verzeichnis getrennt).

 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' 

Hier wurde das Lieferanten- , Ansichts- und Dokumentenverzeichnis ausgeschlossen.

manish1706
quelle
1
Warum sudo? Und was trägt dies zu den vorhandenen Antworten bei?
Muru