해독 구성을 변경하는 방법(밑줄 대신 대시)?

해독 구성을 변경하는 방법(밑줄 대신 대시)?

지금까지 나는 모든 성가신 파일 이름을 명령줄에서 읽기 쉽고 조작하기 쉽게 일괄 변경하는 솔루션을 찾았습니다.

그래서 이라는 수많은 명령어 중에서 작은 소프트웨어를 발견했습니다.디톡스. 기본적으로 공백은 으로 대체됩니다 _. 매뉴얼 페이지를 읽어도 해독이 파일 이름을 바꾸고 공백을 -.

[/] cd test
one five/  one four/  one one/  one three/  one two/
[test] detox *
[test] l
one_five/  one_four/  one_one/  one_three/  one_two/
[test] 

어떻게 하나요?

파일(또는 이 프로그램과 관련된 것)을 찾을 수 없고 .detoxrc, 만들어도 무엇을 넣어야 할지 모르겠습니다.

PS 해독 외에 다른 방법이 있나요?

답변1

최소한 detox 버전 1.2.0부터는 필터링을 사용자 정의할 수 있습니다(배포판에 따라 다음 명령/위치를 변경해야 할 수 있음). 첫 번째:

cp /usr/share/detox/safe.tbl ~/mysafe.tbl

다음으로 파일을 편집하고 mysafe.tbl"space"라는 단어(약 127행)를 검색한 다음 밑줄을 하이픈으로 변경합니다.

이제 ~/.detoxrc다음과 같이 수정하세요.

sequence hyphenated {
   safe {filename "/home/MY_USSERNAME/mysafe.tbl";};
   #wipeup {remove_trailing;};
};

(물론 "MY_USERNAME"을 바꾸십시오...)

이제 다음 명령을 실행하십시오.

detox -vs hyphenated *

가보시면 좋을 것 같아요 :)

20170801 편집:Detox에는 UTF-8 문제가 있는 것 같습니다. 일부 패치가 생성되어 업스트림 및 데비안 메인넷에 이메일로 전송되었습니다. 이제 "github" 같은 사이트에서 버그를 열어야 합니다. 이를 알아낼 시간입니다...

답변2

디톡스는 선택 사항이 아닌 것 같습니다. 원하는 출력이 포함된 필터를 추가하기 위해 소스 코드를 수정하는 것은 매우 간단해야 합니다( 필터를 약간 수정하고 선행 문자를 제거 safe하는 것을 잊지 마세요 ).-

결과를 후처리 detox하거나 다른 도구를 완전히 사용할 수 있습니다. 보다 유연한 파일 이름 바꾸기 도구가 많이 있습니다.

이것펄 이름 바꾸기명령(util-linux 명령과 혼동하지 마십시오 rename)은 임의의 Perl 코드를 사용하여 파일 이름을 변환하는 것을 지원합니다. 이 명령은 renameDebian 및 그 파생 제품(Ubuntu, Mint 등)에서 사용할 수 있습니다. Arch에서 사용 가능합니다:펄 이름 바꾸기. 선행을 변경하고 제거 _하려면 다음을 사용할 수 있습니다.--

rename 's/_/-/g; s/\A-*//' *

이는 현재 디렉터리의 파일에만 영향을 미칩니다(점 파일 제외). 디렉터리에 대해 재귀적으로 작업하려면 find이를 명령과 결합하세요.

find . -depth -exec rename 's/_/-/g; s/\A-*//' {} +

Detox의 다른 기능은 Perl로 표현될 수 있으며 대부분은 다음을 사용합니다.s/PATTERN/REPLACEMENT/운영자. 예를 들어 문자와 숫자만 유지하고 다른 문자 시퀀스를 다음으로 바꾸 -려면

rename 's/[^[:alnum:]]+/-/g; s/\A-//' …

네가 원한다면ASCII를 사용하여 유니코드 문자 근사화, 당신은 그것을 사용할 수 있습니다텍스트::유니코드:

perl -C -MText::Unidecode /usr/bin/rename '$_ = unidecode($_)' …

또 다른 강력한 이름 바꾸기 도구는즈마브명령은 다음에서 비롯됩니다.다루기 힘든껍데기. 먼저 실행하십시오( ~/.zshrc대화식으로 사용하십시오).

autoload -U zmv

_행간 을 변경 -하고 제거하려면 다음을 -사용할 수 있습니다.

zmv '**/*' '$f:h/${${f##*/-#}//_/-}'

이 모드를 **/*사용하면 명령이 현재 디렉터리의 하위 디렉터리에서 반복적으로 작동합니다.

관련 정보