2012-04-19 12 views
7

W dired+ w Emacs 23.2.1 na wariancie Debian Squeeze Wybrałem cztery pliki z *, a następnie nacisnąłem Z, aby je skompresować. Odpowiedziałem na pytanie y i zobaczyłem kilka aktualizacji statusu w mini-buforze. Gdzie znajdę skompresowany plik? Przetestowałem na jeden plik (C-uZ) i Emacs uruchomił gzip na jednym pliku i uczynił go plikiem .gz. Jak skompresować zaznaczone pliki w Emacsie [tar i]?Jak kompresować zaznaczone pliki w Emacsie?

(Aby uniknąć wszelkich filozoficznych lub metodologicznych dyskusji na temat tar, gzip, innych formatów i archiwów w ogóle, chcę tylko, aby cztery pliki były przechowywane w jednym pliku jako skompresowane dane, jeśli można to osiągnąć za pomocą tar i gzip lub ściskania każdy bezpośrednio do archiwum nie ma znaczenia.)

Odpowiedz

17

Jeśli dired+ jest coś jak dired można oznaczyć pliki m a następnie uderzył ! (aby uruchomić polecenie powłoki na oznaczonych plikach) i wpisz polecenie jako tar -czf foo.tar.gz * (* to specjalny znacznik, który jest zastępowany nazwami zaznaczonych plików).

+0

Dzięki, to działa w dired +. Widziałem przykład podobny do tego, ale nie zdawałem sobie sprawy, że * zostanie zastąpione nazwami/marked/files.Myślałem, że powszechnie używane polecenie, takie jak to, będzie "wbudowane" w dired [+]. – SabreWolfy

+0

'dired +' to po prostu zestaw rozszerzeń do 'dired'. –

5

Możesz również archiwizować pliki, zaznaczając je i kopiując do pliku archiwum.

Na przykład zaznacz kilka plików w diredzie i wybierz opcję m-x dired-do-copy.

Po wyświetleniu zapytania o cel, wpisz test.zip. Pliki zostaną automatycznie dodane do archiwum zip.

Można także rozpakować pliki, wybierając je w Dired i uruchamiając komendę dired-do-extract

Aby to skonfigurować, spójrz na następujących zmiennych: dired do archiwum kopiowaniem alist dired-ekstraktem ALIST

Oto mój setup, który służył mi przez wiele lat ...

;; 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

ładowanie dired-a kończy się niepowodzeniem i nie wydaje się być pakietem, który mogę znaleźć wszędzie –

+0

robienie kopii diredowej nie działa tak jak opisujesz, myślę, że musisz mieć rozszerzenie, aby to umożliwić, właśnie dostaję błąd, że cel musi być katalogiem –

+0

Znalazłem "dired-a" tutaj: https://github.com/NikolausDemmel/emacs-pkgs/blob/master/misc/dired-a.el, a także tutaj: http: //groups.google.com/groups?selm=yzig226gpoz.fsf%40inge.nada.kth.se – legoscia

1

Platforma: Ubuntu

Wymagania

System:
sudo apt-get install atool

Emacs:
Mx pakiet-list-pakiety
Cs dired-atool RET
i
x

Rozwiązanie

1) Zaznaczyć pliki w buforze sieciowym.
2) M-x dired-atool-do-pack UWAGA: Upewnij się, że nazwa-pliku-powłoki jest ustawiona na "/ bin/bash".

Powiązane problemy