2012-04-19 50 views
7

Debian SqueezeのEmacs 23.2.1のdired+では、*という4つのファイルを選択してからZを押して圧縮しました。私はyと答えてミニバッファにいくつかのステータス更新を見た。圧縮ファイルはどこにありますか?私はファイル(C-uZ)でテストし、Emacsは1つのファイルに対してgzipを実行し、.gzファイルにしました。 Emacsでマークされたファイルをどのように圧縮するのですか?Emacsでマークされたファイルを圧縮する方法

(tar、gzip、その他のフォーマットとアーカイブに関する一般的な哲学的または方法論的議論を控除するために、私が望むのは4つのファイルを1つのファイルに圧縮データとして保存することです。または直接アーカイブにそれぞれを圧縮することは重要ではありません。)

答えて

17

dired+diredようなものであるならば、あなたはメートルでファイルをマークし、その後を打つことができます!(マークされたファイルに対してシェルコマンドを実行する)、コマンドをtar -czf foo.tar.gz *と指定します(*はマークされたファイルの名前で置き換えられる特別なマーカーです)。

+0

ありがとう、これはdired +で動作します。私はこれに似た例を見ましたが、*がマークされた/ファイルの名前に置き換えられることを理解していませんでした。私はこのような一般的に使われているコマンドはdired [+]に組み込まれていると思っていたでしょう。 – SabreWolfy

+0

'dired +'は 'dired'の単なる拡張です。 –

5

ファイルをアーカイブファイルにマーキングしてコピーするだけでファイルをアーカイブすることもできます。

たとえば、diredに複数のファイルをマークし、m-x dired-do-copyを選択します。

宛先の入力を求められたら、test.zipと入力します。ファイルはzipアーカイブに自動的に追加されます。

また、次の変数を見て、これを設定するには、コマンド

dired-do-extractをdiredで、それらを選択し、実行してファイルを解凍することができます 変数dired-にアーカイブ・コピー連想リスト 変数dired-エキス、連想リスト

はここ何年もの間、私を務めている私のセットアップ、だ...

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

dired-aの読み込みに失敗し、どこでも見つけることができるパッケージのようではありません –

+0

diredのコピーを行っても、あなたが記述しているようには見えません。これを有効にするには拡張機能が必要ですターゲットがディレクトリでなければならないというエラー –

+0

私はここで 'dired-a'を見つけました:https://github.com/NikolausDemmel/emacs-pkgs/blob/master/misc/dired-a.elそしてhttp: //groups.google.com/groups?selm=yzig226gpoz.fsf%40inge.nada.kth.se – legoscia

1

がプラットフォーム:Ubuntuの

要件

システム:
須藤はapt-getをatoolインストール

のEmacs:
のMxパッケージリストパッケージ
Csの変数dired-atoolのRET

X

解決策

1)diredバッファにファイルをマークします。
2)M-x dired-atool-do-pack 注記:シェルファイル名が "/ bin/bash"に設定されていることを確認してください。

関連する問題