반응형
파일 탐색기(Explorer)가 “자연 정렬(natural sorting)”을 써서 1762587476 (1), 1762587476 (2), 1762587476 순서로 보이는 현상입니다. 같은 접두어일 때 괄호 번호가 정렬 키로 인식되면서 기본 이름(번호 없음)이 맨 뒤로 밀리는 케이스가 발생합니다.
기본값: 윈도우 파일 탐색기(Explorer) 는 오래전부터 **숫자 인지 ‘자연 정렬(natural sorting)’**을 기본으로 씁니다. 그래서 2가 10보다 먼저, abc2가 abc10보다 먼저 옵니다.
따라서 파일 수정이 필요함
2-B. “형제 복사본”이 있을 때만 기본 파일에 (0) 붙이기
(예: 1762587476 (1), (2)가 존재할 때만 1762587476 → 1762587476 (0))
Set-Location "D:\작업폴더"
$files = Get-ChildItem -File
# 접미사 " (숫자)"를 제거한 루트 이름으로 그룹화
$groups = $files | Group-Object { $_.BaseName -replace ' \(\d+\)$','' }
foreach ($g in $groups) {
$hasCopies = $g.Group | Where-Object { $_.BaseName -match ' \(\d+\)$' }
$plain = $g.Group | Where-Object { $_.BaseName -notmatch ' \(\d+\)$' }
if ($hasCopies -and $plain) {
foreach ($p in $plain) {
$candidate = '{0} (0){1}' -f $p.BaseName, $p.Extension
# 충돌 시 (0),(1),(2)… 중 비어있는 숫자를 자동 선택
$n = 0
while (Test-Path -LiteralPath (Join-Path $p.DirectoryName ("{0} ({1}){2}" -f $p.BaseName,$n,$p.Extension))) { $n++ }
$candidate = '{0} ({1}){2}' -f $p.BaseName, $n, $p.Extension
Rename-Item -LiteralPath $p.FullName -NewName $candidate
}
}
}
2-C. 하위 폴더까지 재귀 처리
Get-ChildItem -File -Recurse | Where-Object { $_.BaseName -notmatch ' \(\d+\)$' } |
ForEach-Object {
Rename-Item $_ -NewName ('{0} (0){1}' -f $_.BaseName, $_.Extension)
}
안전하게 미리보기만 하려면 Rename-Item 뒤에 -WhatIf를 붙여 시뮬레이션 후 실제 실행하세요.
반응형
댓글