2017-01-09 5 views
1

"Windows 10"운영 체제에 폴더가 있습니다.폴더의 모든 파일 이름 바꾸기 (단어/숫자를 '_'로 분리)

afilename_1 
bfilename_3 
cfilename_2 

이렇게 표시됩니다. 그러나 밑줄 뒤에 추가 된 숫자에 따라 정렬되도록해야합니다. 나는 언더 스코어 이전의 단어들뿐만 아니라 파일 설명도 묘사하고 싶다.

힌트 : 단어/숫자를 '_'로 구분하여 바꿉니다.

출력 예상 : 따로 수동 이름 바꾸기에서

1_afilename 
2_cfilename 
3_bfilename 

어떤 생각?

P. 폴더는 100 개의 파일로 구성됩니다.
Java 프로그래밍 언어의 솔루션은 상당하지만 필수는 아닙니다.

업데이트 (10.01.2017) : 다음은 모든 파일 이름을 출력으로 가져온 것으로 파악 된 샘플 Java 코드입니다.

File folder = new File("/xxx/ss/folder/"); 
File[] listOfFiles = folder.listFiles(); 
for (File file : listOfFiles) 
{ if (file.isFile()) 
{ System.out.println(file.getName()); 
} } 

이제 각 파일 이름을 한 번에 가져 와서 루프에서 스와핑하는 방법을 생각해보십시오.
의견이 있으십니까?

해결책 : Windows Powershell 코드가 작동했습니다. 입력하면

:

xxx_afilename_1 
xxx_bfilename_3 
xxx_cfilename_2 

을 다음과 같이 파일 이름은 다음 코드는 위에서 언급 한 바와 같이 유사한 출력을 얻는 데 도움이됩니다.

ls | %{ ren $_ ($_.name -replace '.*?-(.*?)-(.*?)(\..*)','$2_$1$3') } 
+1

을 유지하기 위해 그럼 당신에 정규식을 사용할 수 있습니다 파일 이름을 분리하고 필요에 따라 형식을 지정하십시오. –

+0

당신이 그 태그를 추가 했으므로, 아마도 당신이 시도한 것을 java에 보여주십시오. –

+0

@ 여기에 출력으로 모든 파일 이름을 얻으려는 샘플 Java 코드가 있습니다. '파일 폴더 = 새 파일 ("/ 사용자/당신/폴더 /"); File [] listOfFiles = folder.listFiles(); (파일 파일 : listOfFiles) { if (file.isFile()) { System.out.println (file.getName()); } } ' 이제 각 파일 이름을 한 번에 가져 와서 루프에서 스와핑을 수행하는 방법을 생각해보십시오. 이견있는 사람? – Varma

답변

1

을의 Windows PowerShell에서

ls | %{ ren $_ ($_.name -replace '(.+)_(.+)','$2_$1') }

업데이트 확장

ls | %{ ren $_ ($_.name -replace '(.+)_(.+)(\..+)','$2_$1$3') }

+0

간단하고 거의 내 질문에 대한 근무했습니다. 파일을 텍스트 파일이라고 가정 해 봅시다. 출력은 다음과 같습니다 .1.txt_afilename 2.txt_cfilename 3.txt_bfilename' 그게 내 원하는 출력도 파일도 확장 충돌로 인해 읽을 수 없습니다. 보시고. 감사합니다. – Varma

+0

파일 확장명을 유지하도록 답변이 업데이트되었습니다. –

1

내가 생각할 수있는 두 가지 방법이 있습니다.

C/C++/C# 또는 Python 또는 what-have-you로 작성하는 것은 매우 간단한 프로그램입니다. 전문 기술에 따라 프로그램을 직접 작성하고 디버깅하는 데 시간이 오래 걸릴 수 있지만 실제로는 훨씬 재미 있습니다.

좋은 프로그래머 텍스트 편집기는 디렉토리 목록과 같은 파일 목록을 가져 와서 이름 바꾸기 명령이 들어있는 .bat 파일을 생성 할 수 있습니다. 매크로 및 정규 표현식 검색 및 바꾸기와 같은 작업은 공정하게 만듭니다 통증이 없다. (나는 항상 jEdit과 추천 -. 무료, 멀티 플랫폼과 강력한)

+0

흥미 롭습니다! 시도해 볼 수 있도록 학습 자료를 링크 해주십시오. 답변 해 주셔서 감사합니다. (: – Varma