Frage

Ich möchte unzip laufen (oder sogar zip) innerhalb dired oder einem dired artigen Puffer. Gibt es so etwas? Ich würde etwas ähnliches wie in der Dateimanager Nautilus mag: d. H, Dateien auswählen und dann einen Tastendruck Drücken Sie diese Dateien in eine neue Archivdatei zu erhalten

Danke

War es hilfreich?

Lösung

Sie haben Optionen ...

eine ZIP-Datei dekomprimieren, müssen Sie nur auf die Variable 'dired-compress-file-suffixes hinzuzufügen

(eval-after-load "dired-aux"
   '(add-to-list 'dired-compress-file-suffixes 
                 '("\\.zip\\'" ".zip" "unzip")))

Nun ist die Z Schlüssel in dired wird die ZIP-Erweiterung erkennen und ein ZIP-Archiv dekomprimieren. Bereits unterstützt sind gunzip, bunzip2, uncompress und dictunzip.

Wenn Sie Dateien zu markieren, und fügen Sie sie in einem ZIP-Archiv, das Sie verwenden können folgende machen z verpflichtet, den Satz von markierten Dateien ZIP:

(eval-after-load "dired"
  '(define-key dired-mode-map "z" 'dired-zip-files))
(defun dired-zip-files (zip-file)
  "Create an archive containing the marked files."
  (interactive "sEnter name of zip file: ")

  ;; create the zip file
  (let ((zip-file (if (string-match ".zip$" zip-file) zip-file (concat zip-file ".zip"))))
    (shell-command 
     (concat "zip " 
             zip-file
             " "
             (concat-string-list 
              (mapcar
               '(lambda (filename)
                  (file-name-nondirectory filename))
               (dired-get-marked-files))))))

  (revert-buffer)

  ;; remove the mark on all the files  "*" to " "
  ;; (dired-change-marks 42 ?\040)
  ;; mark zip file
  ;; (dired-mark-files-regexp (filename-to-regexp zip-file))
  )

(defun concat-string-list (list) 
   "Return a string which is a concatenation of all elements of the list separated by spaces" 
    (mapconcat '(lambda (obj) (format "%s" obj)) list " ")) 

Andere Tipps

Um zip-Dateien, öffnen Sie das Verzeichnis in dired. Markieren Sie die Dateien, die Sie mit m zip möchten. Geben Sie dann

! zip foo.zip * <RET>

aus einem ganzen Archiv zu extrahieren dired Sie eine Datei aus und laufen & unzip markieren, so wie man es in einer Shell.

Zip-Archiv-Modus ermöglicht es Ihnen, Zip-Dateien in einem dired artig zu sehen. Es sollte mit dem aktuellen Versionen von GNU Emacs kommt und wird standardmäßig verwendet, wenn Sie eine Datei mit der Endung .zip besuchen. Von diesem Modus können Sie einzelne Dateien in einen Puffer extrahieren, und von dort mit ihnen C-x C-s speichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top