각 파일 이름의 특정 숫자 문자열로 이름을 바꿔야 하는 .json 파일이 많이 있습니다. 다음 형식을 따릅니다.
[Artist] Title (Date) [Language][Publisher][Website.####][Pages].json
"####"은 각 파일의 이름을 바꿔야 하는 고유한 숫자 ID를 나타내며 길이는 1~4자입니다. 다음과 같아야 합니다.
####.json
이 목표를 어떻게 달성할 수 있나요?
답변1
그리고 zsh
:
autoload -Uz zmv
zmv -n '*\[*.(<->)\]\[*(.json)' '$1$2'
만족스러우면 삭제 -n
(테스트 실행)합니다.
able zmv
autoload
함수에는 두 개의 매개변수가 있습니다.
- zsh 확장 글로벌 모드
- 교체사양
패턴과 일치하는 파일을 찾습니다. 다음은 현재 디렉터리에 순서대로 포함된 숨겨지지 않은 모든 파일입니다.
*
임의 개수의 문자(또는 바이트)\[
문자 그대로의 의미[
*
임의 개수의 문자(또는 바이트).
문자 그대로의 의미.
<->
임의의 ASCII 10진수 시퀀스(<x-y>
x에서 y까지의 숫자를 나타내는 ASCII 10진수 시퀀스와 일치)\]\[
:][
문자 그대로.*
임의 개수의 문자(또는 바이트).json
: 문자 그대로.
교체에서는 $1
첫 번째 쌍에서 일치하는 항목으로 확장하므로 및 (...)
두 번째 쌍( )과 일치합니다.<->
$2
.json
이들이 탐욕적으로 일치하면 가장 오른쪽 쌍에서 (마지막 제외)로 끝나는 *
숫자를 찾습니다. 예를 들어 에서는 s의 두 번째 쌍에 없더라도 추출합니다.[...]
.<digits>
[a.1][a.2.3][x][y][z].json
3
[...]
이것이 문제인 경우 다음과 같이 변경할 수 있습니다.
zmv -n '*.(<->)\]\[[^][]#\](.json)' '$1$2'
[^][]#
and를 제외한 0개 이상의 문자(또는 문자가 아닌 문자)와 일치합니다 .[
]