1

私はよくdired構造を見て、ディレクトリ全体を再帰的に表示します(dired dir "-lR")。これはほとんどの場合うまく機能します。

ただし、場合によっては、見たくない巨大なサブディレクトリ構造があります。完全なツリーを含むdiredバッファ内のサブディレクトリを再帰的に強制終了する方法はありますか?

4

3 に答える 3

2

find-diredは同じ目的で使用します。サブディレクトリを除外するには、Run find (with args):プロンプトで次のように入力します。-path ./exclude_me -prune -o trueこれにより、1つのディレクトリを除くディレクトリの再帰的なリストが表示されexclude_meます。ただし、これは、関数バージョンのfindでUnixライクを使用している場合にのみ機能します。

編集:ツリーを削除する別の方法は、diredバッファを読み取り可能()に切り替えて、バッファC-x C-qを編集することです。

于 2012-07-05T20:53:12.293 に答える
2

わかりました、私は次のelispを書きました:

(defun bp-kill-directory-rec()
  (interactive )
  (let (
    (i (point))
        (cur-dir (dired-current-directory)))
    (beginning-of-buffer)
    (while (search-forward cur-dir nil t)
      (dired-kill-subdir))
    (goto-char i)))

キルしたいディレクトリにカーソルを置くと、そのディレクトリのすべてのサブディレクトリがキルされます。トリックは、(dired-current-directory)パス全体を提供するため、それを検索すると、削除したいディレクトリのみが提供されるはずです。ディレクトリ構造がある場合、次のようなものが/home/a/bあり/home/c/d/home/a/b、悪いことが起こる可能性があります。しかし、それを行うには、ちょっと頭がおかしくなる必要がありますよね?

于 2012-07-06T19:21:04.293 に答える