2016-10-20 1 views
0

쉘에서 기존 케이스를 보존하면서 디렉토리의 내용에서 파일 이름과 디렉토리 이름을 재귀 적으로 바꿀 수 있습니까? 예를 들어 하위 디렉토리의 이름을 "Test"또는 "test"로 지정할 수 있으며이를 "Testa"또는 "testa"로 각각 바꿀 수 있습니다.사례 보존 중 파일 및 디렉토리 이름의 재귀 적 교체

+0

질문이 명확하지 않다고 생각하지 마십시오. – Junaid

+0

@Junaid, 방금 예제를 추가했습니다. – user994165

답변

0

주의 -주의 깊게 실행하면 많은 파일의 이름을 바꿀 수 있으며 파일에 잘못된 문자를 추가하게됩니다. 여기에 실행 취소 버튼이 없습니다.)

알았다면 올바르게 이해하면됩니다.

몇 가지가 .txt 파일과 폴더 구조 스크립트는 다음과 같습니다

C:\Folder\firstfolder 
C:\Folder\fourthFolder 
C:\Folder\SecondFolder 
C:\Folder\Thirdfolder 
C:\Folder\firstfolder\aFile.txt 
C:\Folder\SecondFolder\Anotherfile.txt 
C:\Folder\Thirdfolder\yetAnotherFile.txt 

입니다. 파일을 확장 할 때 폴더와 파일을 분리해야했기 때문에 확장명 뒤에 이름 바꾸기 문자열을 추가하지 않으려 고합니다.

$source="C:\Folder" 
$addtoname="A" 

Get-ChildItem $source -Recurse | foreach { 
    $location = Split-Path $_.FullName 
    if($_.PSIsContainer){ 
     $name=$_.Name 
     Rename-Item $location"\"$name $location"\"$name$addtoname 
    } 
    else 
    { 
     $name = $_.BaseName 
     $ext = $_.Extension 
     Rename-Item $location"\"$nameext $location"\"$name$addtoname$ext 
    } 
} 

그리고 그 결과는 나중에

C:\Folder\firstfolderA 
C:\Folder\fourthFolderA 
C:\Folder\SecondFolderA 
C:\Folder\ThirdfolderA 
C:\Folder\firstfolderA\aFileA.txt 
C:\Folder\SecondFolderA\AnotherfileA.txt 
C:\Folder\ThirdfolderA\yetAnotherFileA.txt 

이다 나는 이것이 당신이 원하는 내가 아무것도이 내 시간을 투자하지 않은 것입니다 바랍니다.

+0

대단히 감사합니다. 그러나 Linux 용 비슷한 스크립트가 있습니까? 귀하의 스크립트가 Windows를 사용하여 다른 사람들을 도울 것이라고 확신합니다. – user994165

+0

글쎄, 리눅스 용으로 작성해 보겠다. 미안하지만 그 전에는 파워 쉘이 리눅스에서 돌아갔다. – Junaid