2014년 1월 21일 화요일

Nautilus Actions 를 사용한 디렉토리별 7z 압축. 우분투


Nautilus Actions 를 사용한 디렉토리별 7z 압축. 우분투

노틸러스에서는, 디렉토리를 몇 개 클릭한 뒤 각 '디렉토리별'로 압축을 하는 것이 불가능하다. 디렉토리를 한꺼번에 압축하는 것만 가능하다. (가능/불가능을 떠나서, 기본적으로 그 기능만 제공된다.)
이것과 관련하여 이런 글을 쓴 적이 있다.

http://nemonein.egloos.com/4740461

저 글에서 사용한 방법은 노틸러스 스크립트인데, 단점은 모든 디렉토리를 압축한다는 것이다.
원하는 디렉토리만 선별하여 각각 디렉토리명으로 압축을 할 수는 없을까?

왜 없겠니..

지금부터 사용할 방법은 Nautilus Actions 를 이용한다.

먼저 Bash 스크립트를 작성해야 한다. ~/bin 등에 저장한다.

#!/bin/bash

for folder ## 선택한 디렉토리명을 Nautilus Actions 로부터 공백으로 구분하여 모두 전달받는다.
do
 
  7z a -mx0 -mmt "${folder%/}.7z" "$folder"
  # %/ 이므로, 문자열의 끝에 / 이 있으면 삭제하고, 없으면 그대로 반환한다. %/* 과는 다르다.
 
done

# mx0 은 묶기만, mx9 는 최대압축

notify-send "7z 압축 완료!"

주석으로 설명 대체.

다음, NA 에서 설정법이다.

이름은 적당히 주고, Action 탭에서 'Display item in selection context menu' 만 선택한다.
Command 탭은 다음과 같이.


%F 를 줘서, 선택한 디렉토리명을 공백으로 구분하여 실행할 스크립트에 모두 전송하도록 한다.
이것을 스크립트에서 받아, for 문을 돌리며 하나씩 수행하는 것이다.

여기까지만 해도 되지만, 오동작을 방지하기 위하여 mime 설정을 추가한다.


이렇게 하면, 노틸러스에서 디렉토리를 선택했을 경우에만 NA 메뉴에 위 Action 이 나타난다. (파일을 선택했을 땐 나타나지 않는다.)


.....................

사용법은 간단하다.
원하는 디렉토리를 임의로 선택한다. 연달아 선택하지 않아도 상관없다.
선택한 후, NA 메뉴에서, 위 액션을 선택하면 현재 디렉토리에 선택한 디렉토리명을 파일명으로 하는 7z 압축파일이 생긴다.

댓글 없음:

sublime close without confirmation

  Close without confirm   Yes, you can just write a plugin to set the view as scratch and close it. Then create a keybinding for that c...