지금까지 나는 모든 성가신 파일 이름을 명령줄에서 읽기 쉽고 조작하기 쉽게 일괄 변경하는 솔루션을 찾았습니다.
그래서 이라는 수많은 명령어 중에서 작은 소프트웨어를 발견했습니다.디톡스. 기본적으로 공백은 으로 대체됩니다 _
. 매뉴얼 페이지를 읽어도 해독이 파일 이름을 바꾸고 공백을 -
.
[/] 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 코드를 사용하여 파일 이름을 변환하는 것을 지원합니다. 이 명령은 rename
Debian 및 그 파생 제품(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##*/-#}//_/-}'
이 모드를 **/*
사용하면 명령이 현재 디렉터리의 하위 디렉터리에서 반복적으로 작동합니다.