How to [tar and] compress marked files in Emacs

In dired+ in Emacs 23.2.1 in the Debian Squeeze variant, I selected four files with * , and then pressed Z to compress them. I answered y at the invitation and saw some status updates in the mini-buffer. Where to find the compressed file? I tested one file ( Cu Z ), and Emacs ran gzip in one file and made it a .gz file. How do I [tar and] compress marked files in Emacs?

(To forestall any philosophical or methodological discussions about tar, gzip, other formats and archives in general, all I want is four files that will be stored in one file as compressed data. If this can be achieved using tar and gzip or compressing each directly to the archive does not matter.)

+8
source share
4 answers

If dired+ is something like dired , you can mark files with m and then press ! (to run the shell command in the marked files) and specify the command as tar -czf foo.tar.gz * ( * - a special marker that is replaced by the names of the marked files).

+18
source

You can also archive files by simply marking them and copying them to the archive.

For example, mark several files in standby mode and select mx dired-do-copy .

When prompted for the destination, enter test.zip . Files will be automatically added to the zip archive.

You can also unzip files by selecting them in standby mode and issuing the dired-do-extract command

To set this, view the following variables: Dired to backup ALIST Dired-extract-ALIST

Here is my installation, which has served me for many years ...

 ;; dired-a provides support functions, including archiving, for dired (load "dired-a") ;; Alist with information how to add files to an archive (from dired-a) ;; Each element has the form (REGEXP ADD-CMD NEW-CMD). If REGEXP matches ;; the file name of a target, that target is an archive and ADD-CMD is a command ;; that adds to an existing archive and NEW-CMD is a command that makes a new ;; archive (overwriting an old one if it exists). ADD-CMD and NEW-CMD are: ;; 1. Nil (meaning we cannot do this for this type of archive) (one of ;; ADD-CMD and NEW-CMD must be non-nil). ;; 2. A symbol that must be a function eg dired-do-archive-op. ;; 3. A format string with two arguments, the source files concatenated into ;; a space separated string and the target archive. ;; 4. A list of strings, the command and its flags, to which the target and ;; the source-files are concatenated." (setq dired-to-archive-copy-alist '(("\\.sh\\(ar\\|[0-9]\\)*$" nil "shar %s > %s") ("\\.jar$" ("jar" "uvf") ("jar" "cvf")) ("\\.tar$" ("tar" "-uf") ("tar" "-cf")) ("\\.tgz$\\|\\.tar\\.g?[zZ]$" ("tar" "-uf %s" "|" "gzip > %s") ("tar" "-czvf")) ("\\.ear$" ("zip" "-qr") ("zip" "-qr")) ; ("\\.rar$" ("rar" "a") ("rar" "a")) ("\\.war$" ("zip" "-qr") ("zip" "-qr")) ("\\.zip$" ("zip" "-qr") ("zip" "-qr")) ("\\.wmz$" ("zip" "-qr") ("zip" "-qr")) ;; for media player skins ("\\.arc$" ("arc" "a") nil) ("\\.zoo$" ("zoo" "aP") nil) )) ;; use pkzip with manipulating zip files (t) from within dired (use zip ;; and unzip otherwise) (setq archive-zip-use-pkzip nil) ;; add these file types to archive mode to allow viewing and changing ;; their contents (add-to-list 'auto-mode-alist '("\\.[ejrw]ar$\\'" . archive-mode)) ;; modify the dired-extract switches to use the directory ;; ~/download/tryout as the default extract directory for zip files (defconst MY_TRYOUT_DIR "~/downloads/tryout" "Directory for extracting files") (setq dired-extract-alist `( ("\\.u\\(ue\\|aa\\)$" . dired-uud) ("\\.jar$" . "jar -xvf %s") ("\\.tar$" . ,(concat "tar -xf %s -C " MY_TRYOUT_DIR)) ("\\.tgz$\\|\\.tar\\.g?[zZ]$" . ,(concat "tar -xzf %s -C " MY_TRYOUT_DIR)) ("\\.arc$" . "arc x %s ") ("\\.bz2$" . ,(concat "bunzip2 -q %s")) ("\\.rar$" . ,(concat "unrar x %s " MY_TRYOUT_DIR "\\")) ("\\.zip$" . ,(concat "unzip -qq -Ux %s -d " MY_TRYOUT_DIR)) ("\\.ear$" . ,(concat "unzip -qq -Ux %s -d " MY_TRYOUT_DIR)) ("\\.war$" . ,(concat "unzip -qq -Ux %s -d " MY_TRYOUT_DIR)) ("\\.zoo$" . "zoo x. %s ") ("\\.lzh$" . "lha x %s ") ("\\.7z$" . "7z e %s ") ("\\.g?[zZ]$" . "gzip -d %s") ; There is only one file )) 
+6
source

Platform: Ubuntu

Requirements

System:
sudo apt-get install atool

Emacs:
Mx package packages
Cs dired-atool RET
I
x

Decision

1) Mark the files in the downloaded buffer.
2) Mx dired-atool-do-pack Make sure the shell file name is set to "/ bin / bash".

+1
source

In response to the last question, another tool that can be used to create a compressed tar file from dired is pack . Mark the files you want and run pack-dired-do-pack , specifying whatever.tar.gz as the name of the output file.

0
source

All Articles