중복 가능성:
일괄 이름 바꾸기 파일
단일 명령으로 이름을 바꾸고 싶은 파일이 있습니다. 파일은 이름입니다그러므로. 이름에서 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
편집하다:어떤 이유로 해당 작업을 수행하는 버전이 설치되어 있지 않은 경우 rename
Perl에서 스크립트의 최소 버전을 쉽게 작성하고 실행할 수 있습니다. 이것은에서 온 것입니다유닉스 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 $_;
}