파일 이름을 하위 디렉터리로 바꿉니다.

파일 이름을 하위 디렉터리로 바꿉니다.

"이름 바꾸기"를 사용하여 여러 파일의 이름을 바꾸려고 하는데 정규 표현식이 잘 설정되어 있습니다.

rename --verbose --path 's|^\[(....)\](.*)\.(.*)|$2 ($1).$3|' *

하지만 저는 각 파일을 공통 시작을 가진 디렉토리에 넣고 싶었기 때문에 다음과 같이 시도해 보았습니다.

rename --verbose --path 's|^\[(....)\](.*)\.(.*)|$2 ($1)/$2 ($1).$3|' *

그러나 이것은 디렉토리가 존재하지 않는다고 불평합니다(존재하지 않기 때문에). 유용한 이름 바꾸기 플래그가 누락된 건가요, 아니면 더 나은 도구인가요?

답변1

Perl 기반을 사용하는 경우 누락된 디렉터리 만들기를 rename호출하는 데 방해가 되는 것은 없습니다 .mkdir()

rename --verbose '
    s|^\[(....)\](.*)\.(.*)|$2 ($1)/$2 ($1).$3| &&
    mkdir("$2 ($1)")' *

이는 사용하는 Perl 표현식과 동일하지만 mkdir()표현식이 일치할 때 디렉터리를 생성하기 위해 끝에 호출을 추가합니다.

원래 교체가 올바른지, 아니면 말이 되는지는 모르겠습니다(어떤 유형의 파일 이름을 가지고 있는지 모르겠습니다). 요점은 표현식이 일반 Perl 표현식이므로 $_(기본 변수)가 마지막에 결과 파일 이름으로 설정되어 있는 한 어떤 Perl 코드라도 자유롭게 사용할 수 있다는 것입니다.

관련 정보