종종 dired 구조를보고, 재귀 적으로 전체 디렉토리를 표시합니다 : (dired dir "-lR")
. 이것은 시간의 대부분을 잘 작동합니다.emacs에서 서브 디렉토리를 재귀 적으로 제거합니다. dired
그러나 때때로, Idon't가보고 싶은 거대한 하위 디렉토리 구조가 있습니다. 거기에 완전한 트리가있는 dired 버퍼의 하위 디렉토리를 재귀 적으로 삭제할 수 있습니까?
종종 dired 구조를보고, 재귀 적으로 전체 디렉토리를 표시합니다 : (dired dir "-lR")
. 이것은 시간의 대부분을 잘 작동합니다.emacs에서 서브 디렉토리를 재귀 적으로 제거합니다. dired
그러나 때때로, Idon't가보고 싶은 거대한 하위 디렉토리 구조가 있습니다. 거기에 완전한 트리가있는 dired 버퍼의 하위 디렉토리를 재귀 적으로 삭제할 수 있습니까?
나는 동일한 목적으로 find-dired
을 사용합니다. 하위 디렉토리를 제외하기 위해프롬프트에서 다음과 같이 입력합니다 : -path ./exclude_me -prune -o true
그러면 하나의 디렉토리 exclude_me
을 제외한 디렉토리의 재귀 목록이 표시됩니다. 이 기능은 Unix 계열의 기능을 find 버전과 함께 사용하는 경우에만 작동합니다.
편집 : 트리를 제거하는 다른 방법은 단순히 dired 버퍼를 읽을 수있게 (C-q C-q) 토글하고 버퍼를 편집하는 것입니다. 당신이 죽이고 싶어 디렉토리에 커서
(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)))
시작하고, 해당 디렉토리의 모든 하위 디렉토리를 죽일 것이다 :
좋아, 나는 그냥 다음 elisp을 썼다. 그 속임수는 (dired-current-directory)
이 전체 경로를 제공한다는 것입니다. 따라서 검색은 원하는 디렉토리 만 제공해야합니다. /home/a/b
및 /home/c/d/home/a/b
과 같은 디렉토리 구조가있는 경우 나쁜 일이 발생할 수 있습니다. 하지만 그렇게하기에는 미친 듯이해야합니다, 안 그래요?
Dired+ 명령 diredp-kill-this-tree
을 사용하십시오.
커서를 목록에서 제거하려는 하위 디렉토리에 놓고 명령을 호출하십시오. 삽입 된 하위 디렉토리와 그 하위 디렉토리도 모두 삽입 (나열)됩니다.
mouse-3
및 항목 이 삽입 된 하위 디렉터리 및 낮은 제거를 선택 : 당신은 서브 디렉토리 목록 내에서 지점을두고 한 후, 다음 중 한 가지 방법으로이 명령을 호출 할 수 있습니다.
흠, intercesting. 그것은 dired가 무시한 .hg 디렉토리를 모두 보여 주며, -prune을 사용하면 모든 것을 제외하는 것처럼 보입니다. –
Find는 실제로이 방법으로'-prune'을 사용할 때 적어도 하나 이상의 다른 기준을 필요로합니다. 나는'-path ./exclude_me -prune -o -true'를 사용하여 나의 대답을 업데이트했다. '-o -true'는'exclude_me'에 * 없다면 * 포함합니다. – ataylor
흥미 롭습니다. 하나 이상의 디렉토리에서 사용할 수 있습니까? .hg 및 exclude_me를 제외하고 싶습니까? –