10

dired+Debian Squeeze バリアントの Emacs 23.2.1 で、4 つのファイルを選択し、それらを圧縮するため*に押しZました。プロンプトに応答yすると、ミニバッファーにいくつかのステータスの更新が表示されました。圧縮ファイルはどこにありますか? 1 つのファイル ( ) でテストしたところC-u Z、Emacs は 1 つのファイルで gzip を実行し、それを .gz ファイルにしました。Emacsでマークされたファイルを[tarおよび]圧縮するにはどうすればよいですか?

(tar、gzip、その他の形式、およびアーカイブ全般に関する哲学的または方法論的な議論を先取りするために、4 つのファイルを圧縮データとして 1 つのファイルに保存することだけが必要です。それが tar および gzip またはそれぞれを直接圧縮することによって達成できる場合アーカイブへの保存は問題ではありません。)

4

4 に答える 4

20

のような場合dired+は、でファイルにマークを付けてから、 (マークされたファイルに対してシェルコマンドを実行するためdiredに)を押して、コマンドを(マークされたファイルの名前に置き換えられる特別なマーカー)として指定できます。m!tar -czf foo.tar.gz **

于 2012-04-19T11:27:11.220 に答える
6

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

たとえば、dired でいくつかのファイルをマークして、 を選択しますm-x dired-do-copy

宛先を求めるプロンプトが表示されたら、 と入力しtest.zipます。ファイルは自動的に zip アーカイブに追加されます。

diredでファイルを選択してコマンドを実行することで、ファイルを解凍することもできますdired-do-extract

これを設定するには、次の変数を見てください: dired-to-archive-copy-alist dired-extract-alist

これが私のセットアップで、長年私に役立ってきました...

;; 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
    ))
于 2012-04-20T12:15:22.783 に答える