폴더 이름을 정리하는 스크립트

폴더 이름을 정리하는 스크립트

몇 가지 규칙에 따라 이름을 바꿔야 하는 폴더가 많이 있습니다. 폴더의 예:

-- Some.Folder.Name.Today.2009
-- Another.messed.Up.folder.1980
-- Third.messed.Up.folder.1980

폴더 이름에서 점(.)을 제거하고 연도 주위에 괄호를 넣어 다음과 같이 보이도록 각 폴더의 이름을 바꾸는 빠른 스크립트가 있는 사람이 있는지 확인하고 싶습니다.

-- Some Folder Name Today (2009)
-- Another messed Up folder (1980)
-- Third messed Up folder (1980)

정말 감사합니다!

답변1

이것을 잘 처리하면 다음과 같이 충분할 것입니다.

use warnings;
use strict;
use File::Copy;

my $oldname;

opendir(my $d, ".") or die $!;
while(readdir $d) {
    if (-d $_ and $_ ne "." and $_ ne "..")
    {
        $oldname = $_;
        $_ =~ s/\./ /g;
        $_ =~ s/(\d{4})/($1)/g;
        move($oldname,$_);
    }
    }
closedir $d;

간략하게만 테스트했으니 자유롭게 골프/수정해 보세요! 그것은 결코 완벽하지 않습니다. 빠르게 함께 해킹했습니다 ;)

메모:현재 상태에서는 폴더 이름이 손상된 디렉터리 내에서 실행되어야 합니다.

C:\Users\John\Desktop\folders>디렉터리
 C 드라이브의 볼륨에는 레이블이 없습니다.
 볼륨 일련 번호는 8888-1666입니다.

 C:\Users\John\Desktop\folders 디렉터리

2011년 1월 29일 오후 7시 14분
2011년 1월 29일 오후 7시 14분 ..
2011년 1월 29일 오후 7시 7분 some.folder.name.2008
2011년 1월 29일 오후 7시 7분 some.folder.name.2009
2011년 1월 29일 오후 7시 16분 282 ren.pl
               1 파일 282바이트
               4개 디렉터리 53,349,425,152바이트 무료

C:\Users\John\Desktop\folders>ren.pl

C:\Users\John\Desktop\folders>디렉터리
 C 드라이브의 볼륨에는 레이블이 없습니다.
 볼륨 일련 번호는 8888-1666입니다.

 C:\Users\John\Desktop\folders 디렉터리

2011년 1월 29일 오후 7시 16분
2011년 1월 29일 오후 7시 16분 ..
2011년 1월 29일 오후 7시 7분 일부 폴더 이름(2008)
2011년 1월 29일 오후 7시 7분 일부 폴더 이름 (2009)
2011년 1월 29일 오후 7시 16분 282 ren.pl
               1 파일 282바이트
               4개 디렉터리 53,349,425,152바이트 무료

답변2

짧은 sed 스크립트를 통해 파일 이름을 실행하는 것이 좋습니다. for file in dir/with/files/*; do name=$(basename "$file" | sed 's/\./ /g;s/\([12][09][0-9][0-9]\)/(\1)/'); mv "$file" "$(dirname \"$file\")/$name"; done. 점을 공백으로 바꾼 다음 연도를 괄호로 묶습니다.

이러한 파일을 스캔/작업하는 경우 해당 파일이 올바르게 인용되었는지 확인하십시오. 공백은 항목 사이의 구분 기호로 자주 사용됩니다.

답변3

~ 안에파워셸(Windows 컴퓨터가 없어서 틀렸을 수도 있지만 Win7에 기본적으로 설치되어 있다고 생각합니다.)

gci *.* | %{
 mi $_ ($_.name.replace('.', ' ').insert($_.name.lastindexof('.')+1, '(')+')')
}

관련 정보