일부 파일의 일괄 이름 바꾸기 [중복]

일부 파일의 일괄 이름 바꾸기 [중복]

중복 가능성:
일괄 이름 바꾸기 파일

단일 명령으로 이름을 바꾸고 싶은 파일이 있습니다. 파일은 이름입니다그러므로. 이름에서 ES Posthumus 비트와 각 파일 시작 부분의 01, 02...등을 제거하고 싶습니다. 어떻게 삭제하나요?

답변1

만 사용하실 수 있으니 bash주의하세요.생성된 파일 이름이 충돌할 수 있음예를 들어, 동일한 노래 제목을 가진 두 개의 파일이 있는 경우입니다. 따라서 -i스위치는 다음과 같습니다.

for f in *.mp3; do mv -i "$f" "${f#*Posthumus - }"; done

답변2

rename 's/\d\d\s-\s[ .A-Za-z]+-\s//' *.mp3
01 - E.S. Posthumus - Ashielf Pi.mp3 renamed as Ashielf Pi.mp3
02 - E.S. Posthumus - Oraanu Pi.mp3 renamed as Oraanu Pi.mp3

편집하다:어떤 이유로 해당 작업을 수행하는 버전이 설치되어 있지 않은 경우 renamePerl에서 스크립트의 최소 버전을 쉽게 작성하고 실행할 수 있습니다. 이것은에서 온 것입니다유닉스 FAQ, 위에서 제공한 정규식과 함께 사용됩니다.

    #!/usr/bin/perl
    #
    # rename script examples from lwall:
    #       rename 's/\.orig$//' *.orig
    #       rename 'y/A-Z/a-z/ unless /^Make/' *
    #       rename '$_ .= ".bad"' *.f
    #       rename 'print "$_: "; s/foo/bar/ if <stdin> =~ /^y/i' *

    $op = shift;
    for (@ARGV) {
        $was = $_;
        eval $op;
        die $@ if $@;
        rename($was,$_) unless $was eq $_;
    }

관련 정보