Repack 7z-Dateien in Zip-Dateien in Linux

Ich habe ein Verzeichnis mit vielen .7z-Dateien, ich muss jede von ihnen als Zip-Archiv neu packen, wie kann ich das automatisch unter Linux machen?

Author: slm, 2016-08-19

2 answers

Verwenden Sie das folgende Skript und führen Sie es aus dem Verzeichnis aus, in dem sich Ihre .7z - Dateien befinden:

#!/bin/bash

TMPDIR=tempdir_$$

for x in `ls *.7z`; do
    mkdir $TMPDIR
    cd $TMPDIR
    cp ../$x .
    p7zip -d $x
    zip -r ../${x%.7z}.zip *
    cd ..
    rm -rf $TMPDIR    
done

Dadurch bleiben Ihre .7z - Dateien dort, wo sie sich befinden, und es werden .zip - Dateien mit demselben Namen erstellt.

Das Skript kopiert die .7z - Dateien in das temporäre Verzeichnis, bevor sie extrahiert werden, da sie normalerweise nach dem Dekomprimieren der Dateien gelöscht werden.

Ich habe das Skript so einfach wie möglich gehalten, damit Sie leicht herausfinden können, wie es funktioniert.

Das Skript funktioniert nur, mit .7z Dateien, die keine Leerzeichen oder andere Sonderzeichen in ihrem Namen haben.

 5
Author: NZD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-08-20 06:27:12

Sie können auch einfach das Werkzeug arepack verwenden, das Teil der Atool-Toolsuite ist. Es ist normalerweise ein yum install atool oder apt install atool. Möglicherweise müssen Sie auch die Pakete p7zip-full und p7zip-rar installieren, wenn sie noch nicht installiert sind. Sobald diese verfügbar sind, können Sie dies einfach tun:

$ arepack -e -F zip *.7z

Dies wird alle konvertieren .7z-Dateien .zip-Dateien. Sie müssen das *noch löschen.7z-Dateien, aber das kann einfach so gemacht werden:

$ rm -f *.7z

Zusätzliche Arepack-Optionen

Options:
  -e, --each               execute command above for each file specified
  -F, --format=EXT         override archive format (see below)
  -O, --format-option=OPT  give specific options to the archiver
  -D, --subdir             always create subdirectory when extracting
  -f, --force              allow overwriting of local files
  -q, --quiet              decrease verbosity level by one
  -v, --verbose            increase verbosity level by one
  -V, --verbosity=LEVEL    specify verbosity (0, 1 or 2)
  -p, --page               send output through pager
  -0, --null               filenames from standard in are null-byte separated
  -E, --explain            explain what is being done by atool
  -S, --simulate           simulation mode - no filesystem changes are made
  -o, --option=KEY=VALUE   override a configuration option
      --config=FILE        load configuration defaults from file

Archive format (for --format) may be specified either as a
file extension ("tar.gz") or as "tar+gzip".
 7
Author: slm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-01-30 23:18:54