파일명 중 23번째에서 29번째 문자를 출력하여 7개가 아닐 시에 파일명 전체 출력하는 코드

조회수 476회

예를 들어서 '181001161609_00001_1AE_AAAABAA'라는 파일명 중 AAAABAA 이부분만 출력해서 이부분이 7자리가 아니면 전체 파일명 '181001161609_00001_1AE_AAAABAA'를 출력해주는 코드를 알고 싶습니다. 직장에서 필요해서 만들려고하는데 너무 힘드네요 도움부탁드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 시스템 환경은 어떤지, 무슨 언어를 쓰시는지, 파일명이 마지막 부분을 제외하고는 일관된 포멧을 가지는지 등등... 질문자분의 질문글에는 문제를 해결하기 위해 필요한 정보가 너무 부족합니다. 최소한 시도해 본 코드나 커맨드를 같이 첨부해 주셔야 좋은 답변을 받을 수 있을 것 같네요. doodoji 2019.1.14 14:04
  • 네. 파이썬을 쓰고 있습니다.. 알 수 없는 사용자 2019.1.14 15:01

1 답변

  • 혹시 PHP 설치하실 수 있으세요? 그러면...

    <?php
    
    // 이 php 파일이 있는 곳의 모든 파일/디렉토리 가져오기
    $files = scandir(__DIR__);
    
    // 쓸데없는거 빼버리기
    unset($files[0]);
    unset($files[1]);
    
    // 모든 파일/디렉토리에 대해서
    foreach ($files as $file) {
    
        // 전체 파일명 따로 킵해두기
        $fullFileName = $file;
    
        // 이름.확장자 형태라면 이름 부분만 남기기
        if (preg_match('/.*\..*/', $file))
            $file = preg_replace('/(.*)\..*/', '$1', $file);
    
        // 이름의 맨앞 23자를 지운 나머지가 7자가 안 되면 전체 파일명 출력
        if (strlen(substr($file, 23)) !== 7)
            echo $fullFileName."\n";
    }
    
    ?>
    
    1. 위 코드를 전부 복사해서 저장합니다. 검색하려는 폴더에 inspect.php라는 이름으로 저장하세요.
    2. 그 폴더를 탐색기로 열고 파일 > 'windows 파워쉘 열기' 해보세요.
    3. php inspect.php라고 쳐보세요.
    4. 문제가 있으면 소스상의 23이나 7 부분에서 문제가 있는 것일 테니 그걸 수정하세요.

    핵심은 (1) 현재 디렉토리 읽기 (2) regex 검사하기 니까 파이썬 쓰고계시면 충분히 포팅 가능할 것이라 생각합니다. (애초에 좋은 매크로 프로그램 하나 찾아서 잘만 하면 코딩 1줄 안해도 이런 작업은 할 수 있을텐데요.)

    뭐암튼 나는 PHP빌런이니까~~ MAKE PHP GREAT AGAIN

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)