2012-04-19 15 views
7

Trong dired+ trong Emacs 23.2.1 trên Debian Biến thể Squeeze tôi đã chọn bốn tệp với * và sau đó nhấn Z để nén chúng. Tôi đã trả lời y lời nhắc và thấy một số cập nhật trạng thái trong bộ đệm mini. Tôi tìm tệp nén ở đâu? Tôi đã thử nghiệm trên một tệp (C-uZ) và Emacs đã chạy gzip trên một tệp và tạo tệp .gz. Làm cách nào để [tar và] nén các tệp được đánh dấu trong Emacs?Cách [tar và] nén các tệp được đánh dấu trong Emacs

(Để tránh bất kỳ thảo luận triết học hoặc phương pháp luận nào về tar, gzip, các định dạng và lưu trữ khác nói chung, tất cả những gì tôi muốn là bốn tệp sẽ được lưu trữ trong một tệp dưới dạng dữ liệu nén. hoặc nén từng trực tiếp vào một kho lưu trữ không quan trọng.)

Trả lời

17

Nếu dired+ là bất cứ điều gì như dired, bạn có thể đánh dấu các tập tin với m và sau đó nhấn ! (để chạy lệnh trình bao trên các tệp được đánh dấu) và chỉ định lệnh là tar -czf foo.tar.gz * (* là một điểm đánh dấu đặc biệt được thay thế bằng tên của các tệp được đánh dấu).

+0

Cảm ơn, điều này hoạt động trong dired +. Tôi đã nhìn thấy một ví dụ tương tự như vậy, nhưng đã không nhận ra * sẽ được thay thế bằng tên của/đánh dấu/tập tin.Tôi đã nghĩ rằng một lệnh thường được sử dụng như thế này sẽ được "xây dựng trong" để dired [+]. – SabreWolfy

+0

'dired +' chỉ là một tập hợp các phần mở rộng thành 'dired'. –

5

Bạn cũng có thể lưu trữ tệp chỉ bằng cách đánh dấu và sao chép chúng vào tệp lưu trữ.

Ví dụ: đánh dấu một số tệp theo hướng dẫn và chọn m-x dired-do-copy.

Khi được nhắc đến, hãy nhập test.zip. Các tệp sẽ tự động được thêm vào kho lưu trữ zip.

Bạn cũng có thể giải nén file bằng cách chọn chúng trong dired và chạy lệnh dired-do-extract

Để thiết lập, nhìn vào các biến sau: dired-to-archive-copy-alist dired-trích-alist

đây là thiết lập của tôi, mà đã phục vụ tôi trong nhiều năm ...

;; 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 e.g. 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 
    )) 
+0

tải dired-a thất bại, và nó không có vẻ là một gói tôi có thể tìm thấy bất cứ nơi nào –

+0

cũng làm một bản sao dired không xuất hiện để làm việc như bạn mô tả, tôi nghĩ rằng bạn phải có một phần mở rộng để kích hoạt này, tôi chỉ nhận được một lỗi mà mục tiêu phải là một thư mục –

+0

Tôi tìm thấy 'dired-a' ở đây: https://github.com/NikolausDemmel/emacs-pkgs/blob/master/misc/dired-a.el và cũng ở đây: http: //groups.google.com/groups?selm=yzig226gpoz.fsf%40inge.nada.kth.se – legoscia

1

Hệ điều hành: Ubuntu

Yêu cầu

hệ thống:
sudo apt-get install atool

Emacs:
Mx gói-list-gói
Cs dired-atool RET
i
x

Giải pháp

1) Đánh dấu các tệp trong bộ đệm đệm.
2) M-x dired-atool-do-pack LƯU Ý: Đảm bảo rằng tên tập tin shell được đặt thành "/ bin/bash".