여러 개별 하위 디렉터리/폴더에 있는 여러 파일을 Windows의 단일 기본 파일로 일괄 이동할 수 있나요?

여러 개별 하위 디렉터리/폴더에 있는 여러 파일을 Windows의 단일 기본 파일로 일괄 이동할 수 있나요?

다음과 같은 위치에 수많은 파일이 있습니다.

C:/Users/(Username)/Desktop/(Parent-Collection name)/(filename1)/(filename1).ext

.../(filename2)/(filename2).ext

.../(filename3)/(filename3).ext

.ext파일을 상위 폴더로 일괄 이동하려고 합니다 .

C:/Users/(Username)/Desktop/(Parent-Collection name)/(filename1).ext

기본적으로 학교 바인더에서 구분선을 제거하는 것과 마찬가지로 하위 폴더가 필요하지 않습니다.

답변1

이 작업을 수행해야 할 수도 있습니다.시그윈, M$ Windoze 스파이웨어를 (여전히??) 실행하고 있는 사람에게 추천하고 싶습니다.

이와 같은 것이 작동해야합니다. 디렉토리 C:/Users/(Username)/Desktop/(Parent-Collection name)/(cygwin에서는 다음과 같이 참조됨) 에서 실행하십시오 /cygdrive/c/Users/(Username)/Desktop/(Parent-Collection name)/).

for i in `find . -name "*" -type f`; 
    do mv $i `echo $i | sed 's/.*\/\([^/]*\)/\1/'`; 
done

그러면 아래 모든 디렉터리의 모든 파일 (Parent-Collection name)(Parent-Collection name). 구체적으로 이것은 현재 디렉터리의 모든 파일을 통해 do인덱스가 반복되는 루프 입니다. i이것이 find명령이 나열하는 것입니다. 를 실행하여 구문을 조회할 수 있습니다 man find. 그런 다음 실행하는 작업은 mv해당 파일( $i)을 새 위치로 이동( )하는 것입니다. 해당 새 위치는 기본 파일 이름을 남기고 경로를 제거하도록 설정된 echo $i스트림 편집기( )를 통해 실행되는 원래 파일 이름( ) sed으로 지정됩니다.man sed

나는 그것을 테스트하고(빈 텍스트 파일 등을 포함하는 두 개의 하위 디렉터리로 디렉터리를 만들고) 반드시 백업할 것을 제안합니다!

그런 다음 현재 디렉터리 아래의 모든 (현재 비어 있는) 디렉터리를 제거할 수 있습니다.

for i in `find . -name "*" -type d`; 
    do rmdir $i; 
done

여기서 유일한 차이점은 파일( ) 대신 find디렉터리( )를 찾은 다음 해당 디렉터리( , 빈 디렉터리에서만 작동함)를 제거하라는 것입니다.-type d-type frmdir

리눅스가 멋지지 않나요? Cygwin은 Linux의 일부 기능을 제공하며 언젠가는 Ubuntu와 같은 것으로 전환할 수 있을 정도로 Linux에 익숙해질 수 있는 첫 번째 단계가 될 수 있습니다. :)

답변2

사용 중인 Windows 버전이 무엇인지는 알 수 없지만 Powershell을 사용하여 이 작업을 수행할 수 있습니다.

$sourcefolder = "C:\Users\username\Desktop\ParentCollectionName"

$allfiles = Get-ChildItem -Recurse $sourcefolder | Where-Object {$_.PSIScontainer -eq $false}
ForEach ($file in $allfiles)
    {
        $destinationfolder = Split-Path -Parent $file.Directory.FullName
        Move-Item $file.FullName $destinationfolder
    }

의 하위 디렉터리에 있는 모든 파일이 $sourcefolder해당 폴더로 이동됩니다 ParrentCollectionName. 그런 다음 빈 하위 폴더를 삭제할 수 있습니다.

원천

관련 정보